SutranetTower — User Manual

A beginner-friendly guide to designing and analysing lattice communication towers — either 3-leg equilateral-triangular or 4-leg square cross-section — using SutranetTower, the tower engineering analysis app by Sutranet, live at www.sutranet.co.in. Covers IS 875 Part 3 wind loading, a full 3D finite-element solve, and IS 17740 / IS 800 member capacity checks — and, for US towers, the ANSI/TIA-222-I design path.

IS 875 Part 3:2015 IS 17740:2022 IS 800:2007 ANSI/TIA-222-I 3-leg & 4-leg OpenSeesPy 3D FEM

1.Introduction

SutranetTower is a web application by Sutranet for designing lattice telecom towers — either a 3-leg (equilateral-triangular) or 4-leg (square) cross-section, selected under Tower Type. You describe the tower’s geometry, member sizes, bracing, wind environment and antenna loads in a structured form (or as a JSON file), and the app (the list below describes the Indian-code path; for US towers see ANSI/TIA-222-I):

  1. Computes wind loads on every section per IS 875 Part 3:2015.
  2. Builds the real 3D lattice (legs, diagonals, horizontals) and solves it with OpenSeesPy, a finite-element engine.
  3. Checks every member against tension and compression (buckling) capacity per IS 17740:2022 / IS 800:2007.
  4. Produces a single self-contained HTML report you can open, share, or archive — and, optionally, a STAAD.Pro .std file for independent cross-checking.
Who this is for Structural/telecom engineers checking tower adequacy, or anyone needing a fast first-pass design and utilisation check before detailed STAAD/manual design. This manual assumes no prior familiarity with the tool, but does assume basic familiarity with tower/lattice structural terminology.

2.Key Concepts

Slope

A tapering segment of the tower defined by its bottom_width, top_width and height. A tower is built from one or more stacked slopes, bottom to top.

Section

A sub-division within a slope with its own height, panel count, bracing pattern and member sizes (section_id e.g. S1, S2…). This is the level at which you assign leg/diagonal/horizontal pipe or angle sections.

Panel

The smallest repeating bracing unit inside a section, set by num_panels. Each panel gets the section’s bracing pattern repeated on every face by rotational symmetry (120° on a 3-leg tower, 90° on a 4-leg tower).

Tower type

The Tower Type node also holds the Design Standard: IS (IS 875 Part 3 + IS 17740 / IS 800) or ANSI/TIA-222-I.

Number of legs, set under Tower Type: 3-leg (equilateral triangle, 3 faces) or 4-leg (square, 4 faces). This drives the leg/face geometry, the wind-load tables (IS 875 Table 33/34/35) and the antenna/ladder mount indices.

Leg base supports, also under Tower Type: Pinned (the default) holds each leg base in position and against twisting about the vertical axis, and lets the leg rotate in bending; Fixed also holds the bending rotations. Pinned gives slightly higher forces in the bottom-panel bracing. The report states which was used, and the STAAD export writes the same supports. In tower.json the key is "base_fixity": "pinned" or "fixed"; a file without it is analysed pinned.

Bending check on beam elements (IS 800), also under Tower Type, IS towers only: IS 17740 has the legs modelled as beams but gives no bending check for lattice members, and refers provisions it does not cover to IS 800. Off (the default) checks every member for axial tension and compression only; moments in legs and in bracing modelled as beam-columns are shown on the report and not checked. On also checks legs for axial force with bending by IS 800 Cl. 9.3.1 and 9.3.2.2, and diagonals modelled as beam-columns by N/Nd + M/Md. The report states which was used. In tower.json the key is "is800_bending_check": true; a file without it is analysed with the check off. A TIA-222-I tower always checks its legs for bending and does not take this key.

Face / Leg / Diagonal / Horizontal

Each face has 2 inclined legs (corner chords) shared with its neighbour, diagonal bracing members, and optional horizontals at panel breaks. Even-leg (4-leg) towers can also carry plan bracing across the ring for torsional rigidity.

3.Quick Start

  1. Open the app at www.sutranet.co.in. Open the Data ▾ menu in the header and click Load Example to start from a working 40 m tower instead of a blank one.
  2. In the Tower Builder tab, walk the left-hand tree from the top: Tower Type, Wind Parameters, Analysis Config, Antennas, Mounts & Platforms, Lighting, Signs & Anti-climb, Climbing Ladder, Feed Lines, Ice & Seismic (Ice, Seismic & Tornado on a TIA-222-I tower), then each slope (S1, S2…) and the sections inside it. A required input that is still blank is outlined in red. If you click Run Analysis with one missing, a message names it and the builder opens the node where it is entered.
  3. (Optional) Click the ✦ Review Inputs button to get an automated sanity check before you spend time waiting on the solve.
  4. Click Run Analysis. The app polls progress every 1.5 s until the job finishes (typically seconds to low minutes, hard-capped at 180 s — see Limitations).
  5. Review the report in the Analysis Result tab: start with Summary for the headline max utilisation and drift, then drill into Capacity and Lattice Forces for any overstressed members.
  6. Use Data ▾ → Export JSON to save your tower definition, Save the run to keep it in History, and (optionally) download the STAAD .std file for an independent cross-check.

4.Wind Input

Wind loading follows IS 875 Part 3:2015. The design wind speed at any height is:

Designing to TIA-222-I? The wind inputs and method are different — see T2–T4.
Vz = Vb × k1 × k2 × k3 × k4
pz = 0.6 × Vz²   (design wind pressure, N/m²)

The Wind Parameters node holds these inputs. The first column gives the builder’s label and, below it, the key in tower.json.

FieldMeaningDefaultNotes
Basic Wind Speed Vb
basic_wind_speed_ms
Basic wind speed at 10 m, flat open terrainrequiredYour site’s value from IS 875 Part 3 Fig. 1 — a run without it is refused. It is expected to be one of the map’s six speeds (33, 39, 44, 47, 50, 55 m/s); another value is analysed as entered, with a warning, and k1 is read at the nearest map speed
Terrain Category
terrain_category
1 = open sea, 2 = open/scattered obstructions, 3 = dense obstructions/suburbs, 4 = dense urban / large city centresrequiredIS 875 Part 3 Cl. 6.3.2; drives the k2 height profile. A run without it, or with a value other than 1–4, is refused
Risk Category (IS 17740 Table 1)
risk_category (top level of the file)
I = unmanned site in open country or optional services (25-year design life); II = every tower that is not I or III (50 years); III = urban location, vital telecom, or failure may cause injury (100 years)requiredIS 17740 Cl. 7.3.1. There is no default; the run is blocked until you choose. It sets k1 (next row). Category IV exists on TIA-222-I towers only
k1 — Risk / Probability
k1
Risk coefficient (probability factor, IS 875 Table 1)from the Risk CategoryFilled in from the tower’s Risk Category and Vb: 0.89–0.94, 1.0 or 1.05–1.08. You may type your own value; one below the table is accepted and flagged on the report. Click Use the Table 1 value to go back to the table
k3 — Topography
k3
Topography factor (IS 875 Part 3 Cl. 6.3.3)requiredEnter 1.0 for level ground, up to 1.36 on hills, cliffs and escarpments. A run without it is refused. The program uses the value you enter; it does not work out Annex C for you, and the report says so
Terrain upwind of the site (optional) and Fetch of the site’s terrain (km)
terrain_change
A change of terrain category upwind (IS 875 Part 3 Cl. 6.3.2.4, Table 3, Annex B)optionalLeave blank when the site’s terrain category extends far upwind. Otherwise choose the upwind category and the distance from the tower to where the terrain changes (0.2 to 50 km). The wind profile then changes at the developed height the panel shows. It cannot be combined with the gust-factor method: such a run is refused, and the fallback is to enter the less rough of the two categories
Cyclone region (IS 875-3 Cl. 6.3.4)
cyclone_region
Is the site in the ~60 km coastal belt of the east coast or the Gujarat coast? (IS 875 Part 3 Cl. 6.3.4)requiredtrue sets Kd = 1.0 (Cl. 7.2.1) and k4 = 1.30 for a communication tower (Cl. 6.3.4) on the tower and every appurtenance; a declared Kd other than 1.0, or a k4 below 1.30, is refused. The site lookup pre-fills “yes” when the coast is within 60 km — it cannot tell which coast, so confirm it
k4 — Importance
k4
Importance factor for cyclonic regions (Cl. 6.3.4)1.0Set to 1.30 and locked by Cyclone region = Yes; 1.0 outside the cyclone belt
Gust Factor G override
gust_factor
A factor on the static design wind force1.0 (builder)The static method of IS 875 Part 3 Cl. 6 and 7 has no gust factor, so leave it at 1.0. The builder always writes the value shown. A hand-written file that leaves the key out gets an estimated factor from the terrain turbulence (typically 2.5 to 3.8), which multiplies the static wind; state 1.0 unless you intend that. On a gust-factor run (section 9) this input is not used
Kd — Wind Directionality
kd
Directionality factor (IS 875 Part 3 Cl. 7.2.1)0.90Set to 1.0 and locked in a cyclone region
Kc — Combination Factor
kc
Combination factor (IS 875 Part 3 Cl. 7.2)1.01.0 for an open lattice tower. Ka (area averaging, Table 4) is worked out by the program for each panel. The design pressure is never taken below 0.70 pz (Cl. 7.2)
Analysis Directions
directions_deg
Wind azimuths analysed3-leg: 0–330° in 30° steps (12 pts); 4-leg: 0/15/30/45° octant0° aligns with model +Y, 90° with +X. The 4-leg octant relies on square symmetry — it auto-expands to the full 0–345° rose when antennas/a ladder make the loading asymmetric. The envelope of all directions governs. Older files with the key direction_deg are still read

Whether the static method or the gust-factor method (IS 875 Part 3 Cl. 10.2) is used is set under Analysis Config → Wind Method; see section 9.

Wind speed lookup by location

Under Site Location Lookup at the top of Wind Parameters, enter the site’s Latitude and Longitude and click → Lookup. The panel shows the basic wind speed from the IS 875 wind map and the distance to the coast; click ✓ Apply Vb to use the speed, or View on Map to check the location. When the coast is within 60 km the lookup pre-fills Cyclone region with “Yes”, with a note: it cannot tell which coast, so confirm it.

Coverage limit The location lookup only works inside the Indian subcontinent (lat −10…40, lon 60…100). Outside this box, enter basic_wind_speed_ms and terrain_category manually.

How force coefficients are applied

The Cf table used depends on both the member shape and the tower type (IS 875 Cl. 7.4.3.5):

  • Flat-sided (angle) members use Table 33: Cf depends on solidity ratio φ. On a 3-leg tower it is constant for all wind directions; on a 4-leg (square) tower the face→corner increase (Cl. 7.4.3.5(b), 1.0→1.2×) is interpolated linearly by wind angle.
  • Round (pipe) members use Table 35 on a 3-leg tower and Table 34 (face vs. corner Cf) on a 4-leg tower. Cf depends on solidity ratio φ and flow regime, set by D×V̄d (shown as DVd), where D is the member diameter and V̄d is the design hourly-mean wind speed at that height (Vb·k1·k2,i·k3·k4, IS 875 Part 3 Cl. 6.4) — not the 3-second gust speed Vz that the pressure uses. The hourly-mean speed is roughly two-thirds of Vz, so more members fall in the higher-Cf regime than a check on Vz would give. Below 6 m²/s the flow is subcritical (higher Cf, ~1.3–1.8); at/above 6 m²/s it is supercritical (lower Cf, ~0.8–1.2).
  • Solidity ratio φ is computed per section from the actual projected member areas vs. the gross panel face area — you don’t set φ directly, it falls out of your member sizing.

5.Slopes & Sections

Build the tower top-down or bottom-up in the tree: add Slopes for each taper change, then one or more Sections inside each slope.

Field (builder label / JSON key)LevelMeaning
Bottom Face Width / Top Face Width
bottom_width / top_width
SlopeFace width (m) at the bottom/top of that slope
Slope Height / Height
height
Slope / SectionVertical extent (m)
Section ID
section_id
SectionUnique label, e.g. S1
No. of Panels
num_panels
SectionNumber of bracing panels stacked in this section (≥ 1)
Panel Height
panel_height
SectionPer-panel height; must equal height / num_panels
Bracing Pattern
bracing
SectionPattern name/alias — see Bracing Patterns
Heights must be consistent The geometry is cross-checked before the solve and the run is rejected with a clear error if either of these fails:
  • The sum of a slope’s section heights must equal that slope’s height (the slope height is the width-interpolation reference; a mismatch would silently build a taller/shorter tower).
  • Each section’s num_panels × panel_height must equal its height (a mismatch leaves a gap/overlap at the panel nodes). A ~1% tolerance absorbs rounded values like 3 × 1.6667 = 5.0001 m.
Modelling tip Use more, shorter sections near the base (highest forces, often heavier members) and fewer/taller sections near the top where forces are smaller. The 20-section cap applies across the whole tower — see Limitations.

6.Member Sections

Each section has a Leg section (leg_section), a Diagonal section (diagonal_section), a Horizontal (ring beam) (horizontal_section) when the bracing pattern places horizontal members, and a section for each tag listed under Redundant members (redundant_sections). If the pattern places horizontals or redundants that have no section, the run is refused unless Auto-Size is on; the diagonal size is never borrowed. Four section types are offered (Section type):

Pipe (CHS)

FieldMeaning
Outer Diameter — OD (od)Outer diameter (mm)
Wall Thickness — t (thk)Wall thickness (mm)
Steel grade (grade)Steel grade. On an IS tower choose an IS 2062 grade or, for a pipe only, an IS 1161 tube grade (YSt 210, 240, 310, 355, 420, 460), which carries its own ultimate strength. A tube grade on an angle or a solid round bar is refused. A plain number in an older file is still read as a yield strength with the IS 2062 ultimate strength

Solid round bar (S.R.)

Enter the Diameter — Ø ({"type": "solid_round", "od": …}) and an IS 2062 grade. It is checked as a round member (buckling curve ‘a’). A bolt hole in a solid bar is deducted across the full diameter.

Single equal angle (ISA, IS 808:2021)

FieldMeaning
Angle designation (designation)Free text, e.g. ISA 65x65x6 or shorthand ISA 50x5
Steel grade (grade)An IS 2062 grade

Double angle (back-to-back)

Same fields as a single angle, plus Gap (gap_mm, back-to-back spacing, default 10 mm), which shifts the combined Iyy via the parallel-axis theorem. On a diagonal, horizontal or redundant, Stitch connectors (IS 17740 Cl. 12.2.2) describes the intermediate connectors: connector type, the largest spacing ai and the number of intermediate connectors n. The modified slenderness of Cl. 12.2.2(b) is then used. Left as Not declared, the member takes the strictest of the three cases. For two angles connected only at their ends this gives the same slenderness as before; it matters when a member is split at a crossover.

End connection of bracing (IS 17740 Annex F)

Each diagonal, horizontal and redundant has an End connection setting (end_connection). It selects the row of IS 17740 Annex F Table 6 that turns the member’s L/r into the equivalent slenderness KL/r used in its compression check. It does not set the net section in tension; that comes from the connections block.

ChoiceJSON valueAnnex F Table 6
Single bolt/rivet at each endsingle_bolt (default for a single angle)Eccentric both ends: KL/r = 60 + 0.5·L/r up to L/r 120; KL/r = L/r above 120 (a single bolt gives no restraint, Note 6)
2+ bolts/rivets or weldedmulti_bolt_or_weldUp to L/r 120 as above; above 120, partial restraint at both ends: 46.2 + 0.615·L/r
Partial restraint at ONE end onlypartial_one_endAbove L/r 120: 28.6 + 0.762·L/r
Concentric one end, eccentric the otherconcentric_one_endUp to L/r 120: 30 + 0.75·L/r

The table applies to single angles as written. A double angle is treated as concentric: up to L/r 120 KL/r = L/r, and above 120 the row of its end connection. A pipe is checked on its geometric L/r whatever the end connection. A solid round bar with a single-bolt or flattened end takes the eccentric rows, and with a welded or multi-bolt end its geometric L/r. Round bracing also has Leg connection (Annex F-8) (leg_connection): choose Welded directly to leg to use the effective length factors K of Annex F-8; leave it unset, or choose Bolted to leg, for K = 1.0. An end connection value the table does not list is refused. The other choices in the list (gusset only, welded direct to legs) belong to TIA-222-I and are hidden on an IS tower.

Bolt holes & net section

On an IS tower, a member’s bolt holes are described only in the section’s connections block: the bolt line of its entry is used for net-section rupture and block shear (IS 800 Cl. 6.3, 6.4), and {"welded": true} declares a welded end. A member with no entry is checked on gross yield only and the report says so. The older n_bolt_holes / bolt_hole_dia keys on a member are refused on IS towers; they remain in use on TIA-222-I towers. fu (ultimate strength) is taken from the grade.

Connection design (optional)

Each section can carry a bolted-connection check, enabled by the Connection design toggle on that section in the Tower Builder. The spec is edited as a small raw-JSON block; leave a sub-key out to skip that connection. The checks are driven by the factored axial demand that the section’s members actually attract in the analysis (tension for the flange, axial magnitude for bracing), and every result appears in the report’s Connections tab. All checks use IS 800:2007 partial safety factors: γm0 = 1.10, γm1 = 1.25, γmb = 1.25 (bolts), γmw = 1.25 (shop weld).

Sub-keyApplies toBasis & checks
flangeLeg splice for a pipe (CHS) legRing-flange splice: bolt tension + prying (IS 800 §10.3.5 / §10.4.7), annular-plate flexural mechanism (EN 1993-1-8 §6.2.4 T-stub, Mode 1/2), and the shell-to-plate fillet weld (§10.5). Governing utilisation across the three.
leg_spliceLeg splice for an angle / double-angle legBolted lap / cover-plate splice in double shear (IS 800 §10.3). Use this or flange to match the leg type — not both.
diag_bracingDiagonals / horizontalsBolted shear connection: bolt shear (§10.3.3, incl. long-joint βlj), bolt bearing (§10.3.4), net-section rupture (§6.3) and block shear (§6.4.1). Governing utilisation across all.
redundant_bracingRedundant members, by tagBracing-shear spec, given either per tag as a {"r1": {…}, "r2": {…}} map keyed by the same tags as redundant_sections, or as one flat spec shared by every tag. A tag omitted from the map is left undetailed; a tag named in the map that the section does not define is an error, not a no-op.

Bolted shear connections — what each field measures

Applies to diag_bracing, horiz_bracing, redundant_bracing and leg_splice — they all share one field set. All dimensions are in millimetres, strengths in MPa.

Gusset / cleat plate Bracing member end d_hole = d_bolt + clearance end_dist pitch edge the member is pulled away from edge_dist width_gross N (factored axial) A A
Plan view. end_dist is measured along the line of force to the edge the bolt bears toward; edge_dist is transverse to it. n_bolts_line counts the bolts in the line of force (2 here), and pitch is the spacing between them — leave pitch at 0 for a single bolt.
Section A–A cover plate member cover plate d_bolt shear plane 1 shear plane 2 t_ply cover plates react N/2 each N
Section through the bolt. The sandwiched detail shown crosses two shear planes, so n_shear_planes = 2. A single lap (member to one plate) crosses one, so n_shear_planes = 1 — that halves the bolt shear capacity, and it is the usual detail for redundants. t_ply is the governing thickness in bearing: the thinner of the member and the sum of the plates on one side.
FieldMeaningNotes
d_boltNominal bolt diameterDrives shear area and bearing.
d_holeHole diameterBolt + clearance (typ. +2 mm to M24). Sets net section and the Cl. 10.2.4.2 minimum distances.
bolt_gradeBolt property class, IS 800 Table 1For example "8.8". Gives the bolt’s ultimate and yield strength at its diameter (class 8.8 is 800/640 MPa up to 16 mm and 830/660 MPa above; 4.6 to 6.8 yields per Amendment No. 2). Classes 4.6, 4.8, 5.6, 5.8, 6.8, 8.8, 9.8, 10.9 and 12.9 are accepted; any other is refused. Do not also give fub_bolt or fyb_bolt: stating both is refused.
fub_boltBolt ultimate strength (instead of bolt_grade)800 MPa when neither this nor bolt_grade is given. Where the bolt yield is needed and fyb_bolt is not given, it is read from Table 1 for the class this value names (800 → 8.8, 1000 → 10.9 …); a value that names no class is refused.
n_shear_planesShear planes crossedDefaults to 2. Set 1 for a single lap — the usual redundant detail.
threads_in_planeThreads in the shear plane?Default true (uses the 0.78 net area). false uses the shank.
t_ply, fy_plyGoverning ply thickness & yieldfu is derived from fy by the IS 2062 grade map.
width_grossGross width of the connected elementNet section = (width_gross − d_hole) × t_ply. Omit (0) to skip the rupture check.
end_dist, edge_distEnd and edge distancesSee the figure. end_dist also enters the bearing kb; leaving it at 0 overstates bearing capacity.
edge_typeHow the edge was cutRequired, no default — see Detailing below.
weldedtrue for a welded member endWrite {"welded": true} as the whole entry. The member is then checked with no bolt holes. Cannot be combined with bolt details.
both_legs_connectedleg_splice of an angle leg onlyRequired, true or false: whether the splice bolts pass through both legs of the leg angle. It decides the leg’s net section.
The bolt line of each entry (d_hole, n_bolts_line, pitch, end_dist, edge_dist) is also used for the member’s own tension check: net-section rupture and block shear (IS 800 Cl. 6.3, 6.4). A member with no entry is checked on gross yield only, and the report marks its net section and block shear as not checked.
gc_mmBracing blocks only: distance from the heel of a single angle to the centroid of its bolt or weld group (mm)IS 17740 Cl. 10.4.4.2. When it is past the centreline of the connected leg, the member’s compression capacity is multiplied by b/2g. Leave it out for normal framing; do not enter 0. A block holding only gc_mm gets no connection check. Not applied when the connected leg is 75 mm or less or L/r > 120.
pitch, n_bolts_lineSpacing and count in the line of forceLong joints (> 15·d) get the Cl. 10.3.3.1 βlj reduction automatically.
bearing_creditleg_splice onlytrue halves the compressive demand per IS 800 §10.8 full-contact bearing. A documented simplification — confirm against your adopted reading.

Ring-flange leg splice — what each field measures

Applies to flange, used when the leg is a pipe (CHS).

Plan pcd / 2 n_bolts plate_od leg pipe OD (from the leg section) Section weld_throat leg pipe d_bolt plate_thickness m e m and e are derived — they drive prying
Plan and section. The bolt pitch circle pcd and plate outside diameter plate_od are diameters, not radii. The prying levers m (bolt axis to shell wall, less 0.8√2·weld_throat) and e (bolt axis to plate edge) are computed from them — a large pcd relative to the pipe means a long lever and a high prying force.
FieldMeaningNotes
n_boltsBolts on the pitch circleAssumed equally spaced.
d_boltNominal bolt diameter—
pcdBolt pitch-circle diameterMust clear the pipe OD; sets the prying lever m.
plate_thicknessFlange plate thicknessDrives the plate flexural mechanism — the usual governing mode.
plate_odPlate outside diameterSets the edge lever e.
plate_fyPlate yieldfu derived from fy.
bolt_grade, or fub_bolt / fyb_boltBolt strengthAs for the bolted shear fields above. Prefer bolt_grade: an 8.8 bolt above 16 mm is 830/660 MPa, not 800/640.
weld_throatFillet weld effective throatShell to plate. 0 means full-penetration — the weld check is then skipped, not failed.
pretensionedBolts pretensioned?Sets β in Cl. 10.4.7 prying (1 if true, else 2). Default false.

Detailing (IS 800 §10.2). Every bolted-shear spec is also checked against the spacing limits the capacity equations assume: minimum end and edge distance (Cl. 10.2.4.2), maximum edge distance 12·t·ε (Cl. 10.2.4.3), and minimum pitch 2.5·d (Cl. 10.2.2). The minimum end/edge distance depends on how the edge was prepared, so edge_type is required and has no default — "sheared" / "hand_flame_cut" give 1.7× the hole diameter, "rolled" / "machine_flame_cut" / "sawn" / "planed" give 1.5×. Omitting it reports the distance as unchecked rather than assuming a factor; an unrecognised value is an error. A detailing violation fails the connection but does not appear in its utilisation ratio, which stays a pure strength figure. A bolt smaller than 12 mm is also reported as a detailing violation (IS 17740 Cl. 13.1.2), on bracing ends, leg splices and ring flanges. Note the Cl. 10.2.3.1 maximum pitch and the corrosive-exposure edge cap are not checked.

edge_typeEdge preparationMin. end & edge distanceM16 (d0=18)M20 (d0=22)M24 (d0=26)
"sheared"
"hand_flame_cut"
Sheared or hand-flame cut1.7 × hole dia30.6 mm37.4 mm44.2 mm
"rolled"
"machine_flame_cut"
"sawn" / "planed"
Rolled, machine-flame cut, sawn or planed1.5 × hole dia27.0 mm33.0 mm39.0 mm
edge_type has no default — on purpose Assuming 1.5× on a sheared edge would pass a connection IS 800 rejects; assuming 1.7× on a rolled edge would fail a compliant one. Neither guess is safe, so a spec that gives distances without edge_type reports them as unchecked rather than resolving either way, and a misspelt value is an error rather than a fallback.

JSON schema

The connections object sits on a section, alongside leg_section / diagonal_section / redundant_sections. Every sub-key is optional — omit one to skip that connection entirely. Notation below: (required) means the analysis raises if the key is absent; = value is the default applied when it is.

"connections": {                    // optional, per section

  "flange": {                      // leg splice — PIPE (CHS) leg only
    "n_bolts":          integer (required)   // bolts on the pitch circle
    "d_bolt":           number  (required)   // mm
    "pcd":              number  (required)   // mm, bolt pitch-circle DIAMETER
    "plate_thickness":  number  (required)   // mm
    "plate_od":         number  (required)   // mm, plate outside DIAMETER
    "plate_fy":         number  = 250        // MPa
    "plate_fu":         number  = from plate_fy
    "bolt_grade":       string               // IS 800 Table 1 class, e.g. "8.8"; or:
    "fub_bolt":         number  = 800        // MPa; not with bolt_grade
    "fyb_bolt":         number  = from the class fub_bolt names
    "pretensioned":     boolean = false      // sets β in Cl. 10.4.7 prying
    "weld_throat":      number  = 0          // mm; 0 ⇒ full pen, weld check SKIPPED
    "fu_weld":          number  = 410        // MPa
    "fu_pipe":          number  = from the leg grade
  },                                          // pipe OD/thk/fy come from leg_section

  "leg_splice": {                  // leg splice — ANGLE / DOUBLE-ANGLE leg only
    // …all the bolted-shear fields below, plus:
    "both_legs_connected": boolean (required) // bolts through both legs of the leg angle?
    "bearing_credit":   boolean = false      // true ⇒ halve compressive demand (§10.8)
    "t_ply":            number  = 8.0        // NOTE: 6.4 for the bracing blocks
  },

  "diag_bracing":  { …bolted-shear fields… },   // diagonals
  "horiz_bracing": { …bolted-shear fields… },   // horizontals

  "redundant_bracing":                 // EITHER one shared spec…
      { …bolted-shear fields… }
    // …OR one spec per redundant tag, keyed as in "redundant_sections":
    { "r1": { …fields… }, "r2": { …fields… } }
}

// ── bolted-shear fields (diag_bracing, horiz_bracing,
//    redundant_bracing and leg_splice all share these) ──
    "d_bolt":           number  (required)   // mm
    "d_hole":           number  (required)   // mm, = d_bolt + clearance
    "edge_type":        string  (required if end_dist/edge_dist given)
                                             // "sheared" | "hand_flame_cut"
                                             // "rolled" | "machine_flame_cut" | "sawn" | "planed"
    "bolt_grade":       string               // IS 800 Table 1 class, e.g. "8.8"; or:
    "fub_bolt":         number  = 800        // MPa; not with bolt_grade
    "n_shear_planes":   integer = 2          // 1 = single lap ← usual for redundants
    "threads_in_plane": boolean = true       // false ⇒ shank area, not 0.78·A
    "t_ply":            number  = 6.4        // mm, governing thickness in bearing
    "fy_ply":           number  = 250        // MPa
    "fu_ply":           number  = from fy_ply
    "width_gross":      number  = 0          // mm; 0 ⇒ net-section check SKIPPED
    "end_dist":         number  = 0          // mm; 0 ⇒ inflates bearing k_b
    "edge_dist":        number  = 0          // mm
    "pitch":            number  = 0          // mm, between bolts in line of force
    "n_bolts_line":     integer = 1          // bolts in the line of force
    "gc_mm":            number  (optional)   // bracing blocks only; Cl. 10.4.4.2, never 0

// a welded member end instead of bolt details:
    { "welded": true }

When a plate’s ultimate strength (fu_ply, plate_fu) is not given, it is derived from its fy through the IS 2062 grade map (250→410, 300→440, 310→450, 350→490 MPa; anything else → 410).

A horiz_bracing entry on a section whose bracing pattern places no horizontal member has nothing to check: it is listed as a warning and the report marks it NOT CHECKED.

Two defaults that quietly weaken the check n_shear_planes defaults to 2, so a single-lap redundant left unset is credited with double the bolt shear it has. And end_dist defaults to 0, which drops the e/(3d0) term from the bearing kb and overstates bearing capacity — the §10.2 detailing check reports that one, but set the distance rather than relying on the report to catch it. width_gross and weld_throat at 0 skip their checks entirely, which is intended but worth knowing.
On an IS tower, unrecognised keys are ignored, not rejected A misspelt sub-key or field is currently silently dropped (a TIA-222-I tower refuses it instead) — writing "redundent" instead of "redundant_bracing" produces a report with no redundant connection results at all and no warning anywhere. Copy the names from this schema; if a connection you configured is missing from the report’s Connections tab, a misspelt key is the first thing to check.

A complete example

An angle-leg section with per-tag redundant detailing — r1 on M16 and the more heavily loaded r2 on M20:

"connections": {
  "leg_splice": {
    "d_bolt": 20.0, "d_hole": 22.0, "bolt_grade": "8.8",
    "n_shear_planes": 2,            // cover plate each side of the angle
    "t_ply": 8.0, "fy_ply": 250.0, "width_gross": 70.0,
    "end_dist": 40.0, "edge_dist": 38.0, "edge_type": "sheared",
    "pitch": 60.0, "n_bolts_line": 2,
    "bearing_credit": true,         // IS 800 §10.8 full-contact bearing
    "both_legs_connected": true     // required on an angle-leg splice
  },
  "diag_bracing": {
    "d_bolt": 20.0, "d_hole": 22.0, "fub_bolt": 800.0,
    "n_shear_planes": 1,            // single lap onto the gusset
    "t_ply": 8.0, "fy_ply": 250.0, "width_gross": 70.0,
    "end_dist": 40.0, "edge_dist": 38.0, "edge_type": "sheared"
  },
  "redundant_bracing": {            // keys match "redundant_sections"
    "r1": {
      "d_bolt": 16.0, "d_hole": 18.0, "fub_bolt": 800.0, "n_shear_planes": 1,
      "t_ply": 6.0, "fy_ply": 250.0, "width_gross": 50.0,
      "end_dist": 32.0, "edge_dist": 32.0, "edge_type": "sheared"
    },
    "r2": {
      "d_bolt": 20.0, "d_hole": 22.0, "fub_bolt": 800.0, "n_shear_planes": 1,
      "t_ply": 8.0, "fy_ply": 250.0, "width_gross": 70.0,
      "end_dist": 45.0, "edge_dist": 38.0, "edge_type": "sheared"
    }
  }
}

The // comments are for this manual only — strip them, JSON has no comments. A single flat spec is still accepted in place of the {"r1": …, "r2": …} map when every redundant tag shares one detail. Swap leg_splice for flange if the leg is a pipe.

Scaffold-grade — requires engineering sign-off The connection module is an implementation scaffold, not a validated calculation. In particular the ring-flange plate mechanism borrows the EN 1993-1-8 T-stub Mode 1/2 coefficients applied per single bolt around the circle — these are not validated against a ring-flange-specific model (e.g. Schmidt–Neuper / Petersen segment method). Every formula, coefficient and clause reference must be checked against your own copy of IS 800:2007 / EN 1993-1-8, and the flange numbers cross-checked against a dedicated model, before any production use. The responsible engineer owns the result.

7.Bracing Patterns

Pick a bracing pattern per section from the dropdown (built from the editable bracings.json library). Every face automatically receives the same pattern by rotational symmetry (120° on a 3-leg tower, 90° on a 4-leg tower). Each pattern declares which leg counts it is valid for (applicable_legs) — the dropdown only offers patterns valid for the current Tower Type, and picking an incompatible one is rejected at run time with a clear error.

The shipped library is a deliberately small starter set of four standard patterns. Anything beyond these is user-defined: create your own in the Bracing Library editor and they are saved to your private library (they never modify the shipped set).

PatternAliasesLegsDescription
single1, warren, pratt3, 4Single diagonal per face, with a horizontal ring at each panel top (Warren / Pratt). The simplest usable pattern.
cross2, x, xx3, 4X-bracing (two crossing diagonals), unsplit at the crossover. No horizontal ring — the diagonals are the only load path (use single if you want a ring at each panel top).
k_bracek, 53, 4Two half-diagonals rise from the bottom corners to a node at mid-span of the top horizontal ring, which is split at that node. The ring holds the apex in-plane, so it is not a mechanism.
x_plan4—4The 4-leg workhorse: X split at the crossover, plus opposite-face plan bracing through the crossover node (face_offset = 2). Gives the square ring torsional rigidity and shortens the diagonals’ out-of-plane buckling length (Annex F F-1). Needs a plan1 entry in the section’s redundant_sections (or auto_size).

Plan bracing (4-leg towers)

A triangular ring is inherently rigid, but a square ring is not — so even-leg (4-leg) towers often need plan bracing: horizontal diagonals across the ring that provide torsional/plan rigidity and also shorten the out-of-plane buckling length of crossover X-braces. In the library editor these appear as Plan Bracing (opposite-face links) alongside the legacy Hip Members (adjacent-face links); both are saved into each pattern’s redundant_links.

The Bracing Library editor

The Bracing Library tab is a single unified 3D editor — you author directly on the live 3D lattice (it replaces the older 2D Face Canvas / Hip / Plan views and the read-only preview). You still design one face — whatever you draw on the reference face is replicated to every other face automatically by rotational symmetry, so a pattern stays leg-count-agnostic. The tab has three regions plus two assistants:

  • Pattern list (left) — every pattern with a small 2D thumbnail; + New, Clone, Delete. The list is filtered to patterns valid for the current Tower Type.
  • 3D Pattern Editor (centre) — the interactive viewport: drag to rotate, scroll to zoom. Each face carries the fixed corner nodes bot_L, bot_R, top_L, top_R, and faces are labelled F0, F1…. You author by clicking one node then another: two nodes on the same face draw a same-face member; two nodes on different faces draw a cross-face (hip / plan) link with the face offset inferred automatically — there is no separate Hip/Plan mode. Click an existing member or cross-face line to split it with a node. A colour legend below the viewport keys diagonal / redundant / ring / cross-face / leg.
  • Editing & controls (right) — the context panels that appear for the current action (draw-member / add-node, member type & OPS element, cross-face link tag, rings and redundant-link lists), plus the two assistants below.
  • Pattern Health panel — four live checks (no duplicate members, all nodes connected, no bypassed nodes, all nodes have out-of-plane stiffness) that update as you edit. Fix reds before saving.
  • Guidance panel — a rule-based (or AI-backed, if an API key is configured) helper. Click Explain current errors or ask a free-text question about the pattern.

Anatomy of a pattern

A pattern is a small record (stored in bracings.json) built from these pieces:

PieceWhat it is
extra_nodesPoints you add on the face beyond the four corners. Most are placed at a fraction t (0–1) along a line between two existing nodes. A special x-intersect node is placed at the true geometric crossing of two lines (used for a real X crossover, e.g. the split X in x_plan4).
face_membersThe members drawn between two same-face nodes. Each has a type — diagonal, horizontal, or redundant — which decides its section (leg/diagonal/horizontal/redundant) and its KL/r limit (150 / 200 / 250).
ops_elementThe finite-element formulation for that member: Truss (axial-only, linear — the default for bracing), corotTruss (axial-only, geometrically nonlinear), or elasticBeamColumn (full 6-DOF beam). Set per member.
redundant_linksCross-face links authored in 3D. A Hip joins nodes on adjacent faces (face_offset = ±1); Plan bracing joins opposite faces (face_offset = num_legs/2, 4-leg only). Each may carry a tag so you can give it its own section.
ringsA horizontal member auto-replicated all the way around the polygon at one node level (a full closed ring), authored by clicking the same node label on two adjacent faces in 3D.
cross_nodesA split point placed along a cross-face link (needs the two-face context to resolve). Only usable as a redundant-link endpoint — never as a same-face face_member endpoint.
name / aliases / descriptionIdentity. Aliases are alternate names the dropdown and JSON accept (e.g. x → cross).
applicable_legsWhich tower types the pattern is valid for — a non-empty subset of {3, 4}. Set via the Applies to checkboxes.

Step-by-step: creating a custom pattern

  1. Open the Bracing Library tab. Start from an existing pattern close to what you want (select it, then edit) rather than a blank face — it’s faster and less error-prone.
  2. Set the Tower Type you’re targeting in the Tower Builder first, so the 3D editor shows the correct 3-leg or 4-leg lattice while you work.
  3. Place nodes. In the 3D viewport click two existing nodes on the same face; in the panel that appears, drag Position t and click Add Node to drop a node at that fraction along the line between them. For a true X crossing, click ✕ X-intersect Node and then click the four endpoints of the two crossing lines — the app computes their intersection.
  4. Draw members. Click one node, then another on the same face; choose Diagonal, Horizontal or Redundant. Click an existing member to change its Type, its OPS element, or (for redundants) its Tag, or to remove it.
  5. Split, don’t bypass. If a node sits partway along a member’s path, that member must be drawn as two segments meeting at the node — never as one member that runs past it (see Do’s & Don’ts). Click a member (or a cross-face line) to split it at a node.
  6. (4-leg / stiffening) Add cross-face links in the same viewport: click a node on one face, then a node on a different face — the editor makes a Hip (adjacent face) or Plan-bracing (opposite face) link and infers the face offset automatically. Give it a Tag and Save Link. For a full horizontal ring, click the same node label on two adjacent faces and choose + Horizontal ring. Use the F0, F1… face labels to pick the intended adjacent/opposite face deliberately.
  7. Watch the Pattern Health panel. Resolve every red item; use Explain current errors for a plain-language fix.
  8. Open Pattern Settings & Save: set Name, Aliases, Description, and tick the Applies to (3-leg / 4-leg) boxes. Click Save Pattern (local).
  9. Save to server (built-in library for admins, or my patterns for a private copy). The server re-validates with validate_bracing_pattern() and rejects anything invalid. This step is required before the pattern can be used in an analysis.
  10. Assign the pattern to a section in the Tower Builder, and give that section a redundant_section for each redundant Tag you used (or enable Auto-Size).

Do’s and Don’ts

✓ Do

  • Start from a working pattern and modify it incrementally.
  • Split every member at any node on its path (e.g. bot_L→mid + mid→top_R), so interior nodes are actually connected.
  • Author leg-splitting nodes directly on the leg corners — a node on a leg must be defined as a fraction of bot_L→top_L (or bot_R→top_R), so the lattice builder physically splits the leg there.
  • Give every diagonal/horizontal/redundant a section in the section that uses the pattern; use distinct Tags for redundants that need different sizes.
  • Add plan bracing on 4-leg towers whose face has an unbraced crossover — it supplies the plan/torsional rigidity a square ring lacks and shortens X-brace buckling lengths.
  • Clear the Pattern Health panel and Save to server before running an analysis.
  • Set applicable_legs honestly — only tick 4-leg if the geometry really works on a square face.

✗ Don’t

  • Don’t duplicate a member — two members on the same node pair (in either order) create a singular stiffness matrix.
  • Don’t leave a node floating — every extra_node must be an endpoint of at least one member, or it’s an unconstrained point.
  • Don’t let a member bypass an interior node on its path — the skipped node keeps an unconstrained out-of-plane DOF and the solve won’t converge.
  • Don’t define a leg node transitively (e.g. bot_L→5 where 5 is itself the leg midpoint) — the leg beam runs straight past it, leaving a mechanism the solver can’t stabilise.
  • Don’t reference a cross_node from a same-face member, and don’t chain cross_nodes — they only resolve as redundant-link endpoints.
  • Don’t reuse a redundant tag on two different links — they would silently share one cross-section assignment.
  • Don’t rely on a 4-leg X-brace being self-braced out-of-plane — a square face has no inherent plan rigidity; without plan bracing it can fail slenderness.
Why these rules exist Each “don’t” maps to a real failure mode the server’s validate_bracing_pattern() catches: a singular matrix, a floating node, or a zero-stiffness mechanism that makes the OpenSeesPy Newton–Raphson solve diverge. Fixing them at authoring time is far cheaper than debugging a non-converging run.
Restart / reload to take effect Patterns saved to the server are written to bracings.json and hot-reloaded in most deployments, but if a new or edited pattern doesn’t appear in the dropdown or the analysis still uses the old geometry, restart the server so it re-reads the file.

8.Antennas & Climbing Ladder

Antennas

Click + Add Antenna Group for each set of identical antennas. A group has an ID, a Type (panel / dish / generic), an Elevation, the Mass per antenna and its size (panel: width, height and depth; dish: diameter; generic: frontal area). The drag coefficient is worked out from the size (IS 875 Part 3 Table 20 for a panel, IS 17740 Annex L Table 7 for a dish); a value in Cd Override replaces it.

Under Mounting positions add one row per physical antenna:

FieldMeaning
Mount (Face / Leg) and #Whether the antenna is on a face or at a leg, and which one. Faces and legs are numbered from 0 with their azimuths shown.
AzLocal azimuth of the antenna: 0° points straight out from the face or leg, clockwise positive.
ArmArm length from the face or leg to the antenna.
LatSideways offset as a fraction of the face width at that elevation (−0.5 to 0.5).
OnShown when mounts are defined: hang the antenna on a mount. A frame then supplies the face or leg, azimuth and arm, and the group takes the mount’s elevation; a platform supplies the elevation only.

The 3×120° Preset button (4×90° on a 4-leg tower) puts one antenna on each face. Each antenna contributes projected wind area, drag, dead weight and the torsion from its eccentric position at its elevation.

  • Mount pipe (optional): the round pole the antenna clamps to — OD (use the actual outside diameter, 60.3 mm for a 2″ NPS pipe), length, Ca (default 1.2) and mass. Its wind area is added to each antenna. Shield behind antenna counts only the length that sticks out beyond the antenna.
  • Shielding Factor (optional, 0 to 1, default 1.0): reduces the wind on an antenna on the leeward side of the tower body for each wind direction. It is not applied to dishes, whose coefficients already vary with the wind angle.

A dish must state its Dish type — without radome, with radome, with cylindrical shroud, or grid — on IS and TIA-222-I towers alike; there is no default and the run is blocked until it is chosen. The type selects the coefficient table (IS 17740 Annex L Table 7, or TIA-222-I Annex C). The dish load has three parts: a force along the wind, a force across it, and a twisting moment.

Climbing ladder

Toggle this on to add the climbing ladder, defined by Ladder A_eff, its exposed wind area per metre of height (A_eff_m2_per_m — required, there is no default), its Drag Coefficient Cd (about 1.2), Dead Weight per metre, its Mounting Location (outside_face, inside_face, or inside_axis) with face index and offset, and the elevation range it covers. A ladder inside the tower takes the Shielding Factor Ka (default 0.9); one on the outside face takes 1.0. The Visual Dimensions only change the 3D drawing. On an IS tower the IS 17740 Cl. 7.2.2 climber load of 1330 N is applied at the ladder top; a tower without a ladder carries no live load. The TIA-222-I load combinations carry no live load.

When the tower has an ice case, the ladder needs two more inputs under Ice on the ladder: the total length of rails and rungs in one metre of ladder (about 3.3 for two rails with 0.4 m rungs at 300 mm) and the rail / rung size. The run is blocked until both are entered.

This is the ladder only. Enter a cable tray / feedline ladder under Feed Lines as its own run (custom, component type Flat, with the tray width), and the cables as separate runs. Do not include trays or cables in the ladder’s area, or their wind load is counted twice.

Feed lines

Each Feed Lines run is a group of identical cables on one face, with its elevation range and arrangement. On an IS tower every line’s projected area is counted (IS 17740 Cl. 7.5, Cf 1.2 round / 2.0 flat); the block treatments are TIA-only (T6), so on an IS tower automatic is evaluated as individual and rectangular / round are not offered.

Mounts & Platforms

Mounting frames and platforms can be declared on an IS tower as well as on a TIA-222-I tower, under Mounts & Platforms. The kinds (sector frame, frame assembly, platform), the mount library and the optional 3D drawing are described in T6. On an IS tower you enter each mount’s wind area (EPA) and weight from the manufacturer’s data, and the wind on it is IS 17740 Cl. 7.5 at the same design pressure as the antennas. IS 17740 gives no shielding factor for mounts, so the reductions offered there (three or more frames at one level, low-profile platforms) are the ANSI/TIA-222-I values; the report says so. A platform on an IS tower must state its deck area, which carries the IS 17740 Cl. 7.2.2 live load of 1500 N/m².

Lighting, signs and anti-climb devices

The Lighting, Signs & Anti-climb node is for items that are neither antennas nor mounts. Each row needs an elevation, a mass and a wind area (EPA); zero is allowed, blank is not. With no placement the item acts on the tower axis in every wind direction. Give it a placement on a face or a leg and enter its EPA normal and sideways, and it can also twist the tower. When the tower has an ice case, enter the values in a table by ice thickness instead; a run whose ice thickness goes beyond the table is refused.

Sanity check Keep antenna elevations and ladder elevation ranges inside the tower’s total height — the Review Inputs guidance flags antenna/ladder elevations that fall outside the modelled tower.

9.Analysis Config

The design standard (IS or ANSI/TIA-222-I) is chosen under Tower Type → Design Standard. The Analysis Config node then sets:

  • Load Combination Standard (IS towers): IS 17740:2022 Table 2 (the default) or IS 800:2007 Table 4. Member ratios read roughly 7–12% lower on the IS 17740 set than on the IS 800 set (wind factor 1.4 against 1.5, dead load 1.1 against 1.5). Every strength combination of the chosen set, including the gravity-only ones, enters the member checks.
  • Wind Method (IS towers): the checkbox Use the gust-factor method (IS 875 Part 3 Cl. 10.2). Off, the static method is used, and the run changes to the gust-factor method by itself only when the first natural frequency is below 1 Hz (IS 17740 Cl. 8.2). On, the wind on the structure and on antennas, ladder and feed lines is the hourly-mean pressure × G(z) whatever the frequency, and Kd, Ka and Kc are not applied. The gust-factor method cannot be combined with a change of terrain upwind; such a run is refused.
  • Redundant Member Grade: one grade for every redundant member — IS 2062, or an IS 1161 tube grade when the redundants are pipes; on a TIA-222-I tower an ASTM grade, which is required when the tower has redundant members (there is no ASTM default).
  • Auto-Size Members: tick Auto-size members left without a section, then choose whether to size unspecified horizontal and/or redundant members, and the number of Refinement Passes (2–3 is enough). The program picks the lightest IS 1161 pipe or IS 808 angle (AISC shapes on a TIA tower), in the family of the section’s diagonal, that passes slenderness, compression, tension and the minimum bracing resistance; the chosen member is then checked like any other. The run log lists each pick and marks one for which nothing in the catalogue passes (that member then fails its check). The picks are written into the run’s tower file, so reopening the run from History shows them. With Auto-Size off, a horizontal or redundant with no section stops the run; the diagonal size is never borrowed.

The element formulation for each diagonal and horizontal is defined per member in the Bracing Library — every pattern carries its own ops_element (choose corotTruss, Truss, or elasticBeamColumn on each member), so different sections can use different bracing behaviour. It is no longer a single tower-wide toggle in the Config node.

OptionWhat it modelsWhen to use
Truss (default)Axial-only, geometrically linearStandard pin-jointed bracing assumption for diagonals/horizontals; matches STAAD’s MEMBER TRUSS
corotTrussAxial-only, geometrically nonlinear (accounts for P–Δ/rope-tension effects)When you want the bracing’s own geometric nonlinearity included
elasticBeamColumnFull 6-DOF beam with bending/shear stiffnessUse if the member is rigidly/moment-connected, or to study added lateral stiffness from bending continuity

Legs always use elasticBeamColumn (they carry significant bending in addition to axial load and need full beam behaviour). For model-validation work, the per-member choice can be force-overridden from the CLI (not exposed in the UI):

python main.py tower.json --diag-type elasticBeamColumn --horizontal-type elasticBeamColumn --redundant-grade 350

Automatic planar-joint stabilization. Singular “planar-joint” nodes (for example an X/M crossover on a square 4-leg face with no plan bracing) have no out-of-plane stiffness when their bracing is axial-only truss, which would make the stiffness matrix singular. SutranetTower auto-stabilizes these joints — the offending truss bracing is promoted to elasticBeamColumn automatically (the PLS-TOWER / tnxTower approach), so the model stays solvable without manual edits. This is on by default; the analysis log lists exactly which joints were stabilized.

K-brace horizontals on IS towers. A horizontal that a diagonal ends on part-way along its length, with no plan bracing at that node, is modelled as a beam (elasticBeamColumn) on an IS tower, as IS 17740 Cl. 9.1(a)(2) asks for. The analysis log lists these members.

Dynamic wind, seismic & ice loads

(On a TIA-222-I tower see T7 instead.) Three additional IS 17740 load effects. Seismic and ice live under the Ice & Seismic builder node and are off by default; a plain tower report has neither unless you enable them. The gust-factor method is switched on under Analysis Config, and also engages by itself when the tower is flexible.

EffectBasisWhen it engages
Gust-factor dynamic windIS 875 Pt 3:2015 Cl. 10.2 — along-wind gust factor G(z) on the hourly-mean pressureAutomatically when the first-mode frequency f₁ < 1.0 Hz (the IS 17740 Cl. 8.2 mandate), or on request with Use the gust-factor method under Analysis Config (wind.dynamic_method: true). f₁ is the IS 17740 Cl. 8.4(a) formula value, with the mass of the steel and of every antenna, mount pipe, ladder, feed line, mount and attachment; the report also shows a Rayleigh estimate for comparison. A gust-factor calculation that fails stops the run
SeismicIS 1893 Part 4 (via the IS 17740 Foreword) — Aₕ = (Z/2)(Sa/g)(I/R), storey forces Qᵢ ∝ Wᵢhᵢ²When the seismic block is enabled. The zone (II to V) is required. The Category (1 to 4, default 2 for a communication tower) sets the importance factor; you may raise it but not lower it. Response reduction defaults to 2.0 and soil to medium. The spectrum is IS 1893 (Part 4):2024 Annex C at 2% damping, and the period is found by Rayleigh’s method from one static solve. Two cases are added for every wind direction analysed: 1.1 DL + 1.0 E and 0.9 DL + 1.0 E. Vertical shaking is not included, and the report says so. A site-specific spectrum (at 2% damping) can be given in the tower file as seismic.site_spectrum; the builder keeps one that was imported but has no editor for it. A Category 1 or 2 tower without one gets a warning (IS 1893 Part 4 Cl. 7.1). The method is equivalent static; the condition that the first mode governs is not checked, and the report says so
IceIS 17740 Cl. 7.2.4 — height-escalated ice thickness, added weight and projected-area sleeve with round-member CfWhen Enable atmospheric ice is ticked and the design ice thickness is above zero (rare across most of India). In the builder both Design Ice Thickness tᵢ and Wind Speed with Ice start blank and the run is blocked until you enter them; tick Use full Vb to run the ice case at the basic wind speed instead of entering a speed. Ice is put on every member, on antennas and on the climbing ladder. Adds the case 1.1 DL + 1.0 ice + 1.0 wind on ice. An ice run needs the two ladder ice inputs (see 8) and cannot include a generic antenna, which has no dimensions to ice

When enabled, the member-capacity check envelopes over all ultimate cases (wind + seismic + ice), and the report Summary tab gains dedicated dynamic / seismic / ice panels. A red banner also appears whenever f₁ < 1.0 Hz to flag that a dynamic gust-factor analysis is required.

T.US Design — ANSI/TIA-222-I

SutranetTower can design a tower to the US standard ANSI/TIA-222-I instead of the Indian codes. Pick ANSI/TIA-222-I — US LRFD as the Design Standard under Tower Type ("design_standard": "TIA222I" in tower.json) and the whole run follows it: wind loads, load combinations, member strength, connection design, the report and the STAAD export. The 3D finite-element solve itself is the same for both standards.

This chapter covers only what is different on a TIA tower. Everything about geometry, slopes, sections and bracing patterns (sections 5–7) applies unchanged.

What switching to TIA-222-I changes for you
  • The builder switches its input units to US customary (ft, in, kip, mph). You can switch back with the SI / US buttons; the saved file is always SI.
  • Steel grades become ASTM (A572-50, A36, A500-C…) and sections come from the AISC shapes database.
  • You must choose a Risk Category before the tower can run (T2).
  • Design is LRFD: factored loads (TIA-222-I §2.3) against φ·Rn (Section 4).

T1. Scope

CoveredNot covered (the run refuses, or you must check by hand)
Self-supporting lattice towers, 3-leg or 4-leg. Wind (§2.6), ice (§2.6.10), seismic (§2.7), tornado (§2.9), mounting frames and platforms (§2.6.11.2), feed lines, member strength (Section 4), bolted connections, ring flanges and U-bolts (§4.9, Annex Q). Guyed masts, monopoles and tubular spines. Anchor rods and base plates (§4.9.9). Guy link plates. Slip-critical connections. Double-angle legs. The design of the mounts themselves (Section 16) — only their load on the tower is included. Foundations.

T2. Site inputs (Wind Parameters)

None of these can be looked up by the app for a US site — the location lookup covers India only. Read them from the ASCE 7 Hazard Tool and the project documents.

FieldJSON keyWhere the value comes fromDefault
Risk Category (Table 2-1)risk_category (top level) I, II, III or IV, from the structure’s use and the consequence of failure (§2.2). If a failure could damage a neighbouring facility of higher category, use that category. None — required
Basic wind speed Vwind.basic_wind_speed_ms The ASCE 7 wind map for your risk category (3-second gust at 10 m, Exposure C) —
Exposure Categorywind.exposure B (urban, suburban, wooded), C (open terrain), D (flat, unobstructed, coastal) — Table 2-4 C
Ground elevation zswind.ground_elevation_m Site elevation above sea level. Sets the air-density factor Ke = e−0.000119·zs (§2.6.8) 0
Topographic factor Kztwind.kzt 1.0 on flat ground; higher on hills, ridges and escarpments (§2.6.6). Not calculated by the app. 1.0
Analysis directionswind.directions_deg See T3 Every face’s Table 2-6 directions
The risk category is one declaration used everywhere It decides which wind (and ice) map you should read V from, the seismic importance factor (Table 2-3: I — none, II 1.00, III 1.25, IV 1.50) and whether tornado loads apply (III and IV only). It is shown next to V in the report so a checker can confirm the two match. The app cannot check that your V came from the right map — that is on you.

The directionality factor Kd is fixed at 0.85 for latticed towers (Table 2-2). The IS inputs k1–k4, Kc and the gust factor do not apply and are hidden.

T3. Wind directions

TIA-222-I §2.6.11 requires each wind direction of Table 2-6 to be checked for each face:

  • 4-leg (square): face-on and 45° to every face → 0°, 45°, 90° … 315° (8 directions).
  • 3-leg (triangular): face-on, 60° and ±90° to every face → every 30° (12 directions).

Directions are measured from the normal to face 0. When you switch a tower to TIA-222-I, or change its leg count, the builder ticks these directions for you. You may add more (every 15°, say).

If you remove some and the tower carries antennas, a ladder, feed lines or mounts — anything that loads one face differently from another — a warning under the direction grid lists the missing directions, with an Add them button, and the report repeats the warning. A bare tower with no attachments is not warned: every face then behaves like face 0.

T4. How the wind load is calculated

qz  = 0.613 × Kz × Kzt × Ks × Ke × Kd × V²          (N/m², V in m/s)
Gh  = 0.85 + 0.15 × (h/45.7 − 3),  kept between 0.85 and 1.00
F   = qz × Gh × (EPA)S
(EPA)S = Cf × [ Df × Af + Dr × Ar × Rr ]
  • Kz varies with height and exposure (Table 2-4). It is evaluated at each section’s mid-height.
  • Cf depends on the solidity ratio ε of the face: 4.0ε² − 5.9ε + 4.0 (square) or 3.4ε² − 4.7ε + 3.4 (triangular).
  • Af is the projected area of flat members (angles), Ar of round members (pipes, solid bars). Round members are reduced by Rr, which depends on the flow regime.
  • Df, Dr (Table 2-6) depend on where the wind comes from:
    TowerFace-onOther tabulated directions
    Square1.045°: 1 + 0.75ε (max 1.2), flat and round
    Triangular1.060°: Df 0.80 · ±90°: Df 0.85 · Dr 1.0 throughout
    A direction between the tabulated ones takes the nearest one.
  • Tapered towers (§3.7.1): if the leg slope changes by more than 1° between sections, and the projected legs meet within the tower height, extra load cases are added with the wind pressure reduced above or below that point. They appear as …_ap1hi / _ap1lo cases and feed the capacity check automatically.

T5. Members, materials and strength

Sections and grades

Section typeHow to enter it
AngleAISC equal-leg designation, e.g. L4X4X3/8. Sizes below L2×2 (no longer in the AISC database) are included for older towers.
Double angle (back-to-back)The single-angle designation plus the gap. For bracing, fill in Stitch connectors (§4.5.3): connector type, spacing a and number of intermediate connectors (§4.5.3). Without them the member is checked by the strictest §4.5.3 rule. Double-angle legs are refused — Table 4-3 has no rule for them.
Pipe / round HSSAn AISC designation such as HSS10X.500 (checked on its design wall thickness, 0.93× nominal), or leave it blank and enter OD and wall thickness.
Solid round barDiameter only.

Grades are ASTM names (A572-42/50/55/60/65, A871-60/65, A588, A606, A36, A992, A529-50, A500-B/C). Yield and ultimate strengths are the ASTM minimums. Thickness-dependent reductions are not applied. The Redundant Member Grade under Analysis Config has no ASTM default: a tower with redundant members cannot run until one is chosen, and an IS grade is refused.

End connection of bracing

The end connection sets the bracing’s effective slenderness (Tables 4-4 and 4-5):

ChoiceMeaning
Single bolt / flattened endEccentric at both ends.
Welded / 2+ bolts, both endsConcentric, with partial restraint from the member it connects to.
Welded / 2+ bolts to a gusset onlyConnected only to a gusset, not also to the leg or restraining member: §4.5.2 gives no partial restraint.
Welded direct to legs — cut / continuousRound bracing welded straight onto the legs (Table 4-5). “Cut” = separate pieces at the joint; “continuous” = one bar bent or layered through it.

The IS-only choices (“partial restraint at one end”, “concentric one end”) are hidden on a TIA tower because Table 4-4 has no row for them.

What is checked

  • Compression: φcFcrAg, with local buckling through the effective yield F′y (§4.5.4.1). Angles use the angle column curve, round members the AISC curve.
  • Tension: the lesser of yield on the gross area and rupture on the effective net area (§4.6), with the prescribed shear-lag factor U.
  • Slenderness: legs per Table 4-3; bracing per Table 4-4; crossing and K-bracing per Tables 4-6 / 4-7, using the actual connection points in your bracing pattern. A crossover only counts as supported if the plan or hip bracing there is triangulated (Figure 4-2).
  • KL/r limits (§4.4.2): legs 150, diagonals and horizontals 200, redundants 250, tension-only members 300.
  • Minimum bracing strength (§4.4.1, Tables 4-1 and 4-2): every bracing member is designed for at least the required bracing force from the legs it braces. Hip bracing uses Figure 4-2 note 3 instead. Redundants are usually sized by this minimum rather than by their analysis force.
  • Legs in bending (§4.8.1): axial load plus the moment from leg continuity, with the B1 magnifier.
  • Joint eccentricity (§4.4.4.2): if a single-angle brace is connected beyond the centreline of the leg, enter gc_mm in the connection block (T9). Otherwise normal framing is assumed.

Auto-size works on TIA towers too: it picks from the AISC catalogues and checks with the TIA rules above.

T6. Antennas, mounts, feed lines and the ladder

Antennas

Wind force F = qz · Gh · Ka · Ca · A (§2.6.11.2), at the antenna’s elevation. Panels take Ca from Table 2-8 by their aspect ratio (1.2 to 2.0); dishes use Annex C Tables C-1 to C-4, chosen by the required Dish type, with the force along the wind, the force across it and the twisting moment, all varying with the angle between the wind and the dish axis. Ka is taken as 1.0.

Mounts & Platforms

Add the frames and platforms your antennas hang on under Mounts & Platforms. Their wind area and weight are loaded onto the tower. You enter the EPA and weight from the manufacturer or a catalogue, at one or more ice thicknesses; the app interpolates at the actual ice thickness.

KindUse forKa
Sector frameOne frame on one face or leg. Enter the normal and transverse EPA. 1.0; 0.80 or 0.75 only for a group of three or more frames at the same elevation (§2.6.11.2.2)
Frame assemblyA catalogue value for a complete set of frames that already includes their shielding.not applied
PlatformFrame/truss platform, low-profile platform, or circular ring. By type: 1.00, 0.75 (square) / 0.67 (triangular), 1.00
  • An antenna can be placed on a mount; it then moves with the mount.
  • Frequently used products can be saved to your mount library.
  • The optional 3D drawing of a mount is for the viewer only — it never changes a load.
  • If you add antennas but no mounts, the report warns that any mount load is missing.

Feed lines

Each Feed Lines run is a group of identical cables on one face. On a TIA tower the cluster treatment can be individual (every line counted), rectangular or round (the group treated as one block, §2.6.11.5), or automatic (the lower of the two per direction). A block is only allowed when the lines really form a cluster — at least two lines, no further apart than three times the larger diameter — and automatic never applies block relief to flat lines. A cable tray or feedline ladder is entered as its own run with a flat component type.

Climbing ladder

Same input as on IS towers (section 8), loaded with the TIA velocity pressure. TIA-222-I load combinations carry no live load, so the climber load is not applied.

T7. Ice, seismic and tornado

All three are under Ice, Seismic & Tornado and are off until you enable them.

LoadInputsWhat the app does
Ice (§2.6.10) Design ice thickness ti and the wind speed with ice Vi, both from the ASCE 7 Hazard Tool for your risk category (§2.6.4). Both are required: the fields start blank, and Vi cannot be worked out from V. Either enter Vi or tick Use full V to run the ice case at V, which is conservative. A tower file with an ice case that states neither (ice_wind_speed_ms or "use_basic_wind_speed": true) is refused. Ice thickness grows with height (tiz = ti·Kiz·Kzt0.35); adds ice weight and the larger iced wind area, on the structure, feed lines, mounts, antennas and the climbing ladder. With an ice case a panel antenna must state its depth, the ladder needs its two ice inputs, and a generic antenna is refused.
Seismic (§2.7) SDS, SD1 (site-adjusted design values), TL, site class. The importance factor is not an input — it comes from the risk category and is shown read-only. Equivalent lateral force method, R = 3.0, with the §2.7.8.1.1 minimum. Vertical effect ±0.2 SDS·D. A Risk Category I tower cannot have a seismic block (Table 2-3 gives no factor).
Tornado (§2.9) Whether the site is in the tornado-prone region, and the tornado speed VT from the Hazard Tool. Applies only to Risk Category III and IV. The panel tells you live whether §2.9 applies or which exemption does. When it applies, tornado cases are enveloped with the normal wind cases and the greater governs.

If your tower is Risk Category III or IV and you have not added a tornado block, the report warns that §2.9 was not evaluated.

T8. Load combinations

CaseCombination (§2.3.2)Present when
ULS11.2 D + 1.0 Woalways, per direction
ULS20.9 D + 1.0 Woalways, per direction (uplift)
ICE11.2 D + 1.0 Di + 1.0 Wi (the ice weight takes 1.0)ice enabled
EQ1 / EQ2(1.2 + 0.2 SDS) D + Eh  /  (0.9 − 0.2 SDS) D + Ehseismic enabled
TOR1 / TOR21.2 D + 1.0 WT  /  0.9 D + 1.0 WTtornado applies
SLS11.0 D + 1.0 Wo at the 60 mph service wind speed, Kd 0.85 (§2.8.3)always — used for the serviceability check

Member capacities are checked against the envelope of every ULS, ICE, EQ and TOR case.

Serviceability (§2.8.2): twist and sway rotation ≤ 4° and horizontal displacement ≤ 3% of height, checked on SLS1 — the 60 mph service loads, whatever your design V. The report’s Direction Summary (base shear, tip drift, reactions), the max tip deflection figure and the PDF reaction table all show this service case and say so. They are not design values: take foundation design forces from the factored cases in the Support Reactions tab. In the STAAD file the service wind is written as its own load cases.

T9. Connection design

Connections are entered as JSON in the section’s Connections box; the placeholder shows a TIA example. The checks follow §4.9: bolt tension, shear and bearing, combined tension and shear, connecting plates, block shear, bracing connections, angle-leg splices (with the §4.8 eccentric-splice check), ring flanges to Annex Q, welds, and U-bolts.

  • Every key is checked. A misspelt key stops the run instead of being ignored.
  • edge_type (sheared or rolled) is required: the minimum edge distance depends on it.
  • Give the bolt strength as bolt_grade (e.g. A325) or bolt_fu.
  • A ring flange needs nc or nc_basis (Annex Q, Table Q-1).
  • Two keys change the member check as well as the connection: gc_mm in a bracing block (joint eccentricity, §4.4.4.2) and both_legs_connected in a leg splice (raises the shear-lag factor U from 0.80 to 1.00).
  • redundant_bracing can be one block for all redundants, or one block per tag ({"r1": {…}, "r2": {…}}).
  • Anchor rods, base plates, guy link plates and slip-critical connections are refused.

T10. Report, warnings and STAAD export

  • The report opens in US units; the SI / US toggle in its header switches it.
  • The Wind, Antennas and Capacity tabs show the TIA quantities and clause references. The Summary tab adds ice, seismic and tornado panels when those loads are enabled.
  • The compliance banner at the top of the Summary lists what the app could not decide for you. On a TIA tower it can report: missing wind directions (§2.6.11), antennas with no mounts, the two-period seismic spectrum being used (§2.7.6.1), tornado loads not evaluated (§2.9), a bent main diagonal that needs hip bracing (§4.5.2.3), and a seismic or ice block that failed and was not analysed. Read it before the numbers.
  • The STAAD.Pro model is written in FEET / KIP, with the AISC angles as a user table inside the file. Towers with double-angle members cannot be exported. See section 13.
Known gaps on the TIA path
  • §4.4.4.1 joint eccentricity: the model assumes bracing meets at the leg work point. Other framing is not detected and not warned about.
  • §2.7.6.1 multi-period spectrum: the two-period spectrum is used; check the site spectrum if one is required.
  • Site values (V, Kzt, SDS/SD1, VT, ice) and mount EPA are taken as entered and cannot be checked by the app.

10.Running the Analysis

  1. Click Run Analysis. The browser posts your tower JSON plus the analysis config to the server, which spawns the analysis as a background job and returns a job_id.
  2. The app polls job status every 1.5 s while a window shows the progress. Status moves through running → done, error or cancelled.
  3. On done, the generated HTML report loads automatically into the Analysis Result tab.
  4. On error, the status panel shows the reason in the run’s own words (e.g. a missing input, timeout, or memory limit — see Troubleshooting). A run that is refused for a missing or invalid input is not counted against your quota.
  5. If the inputs were accepted but the analysis itself failed (for example it did not converge), the report is still shown, with a red ANALYSIS FAILED banner. Such a run cannot be saved or exported.

You can have one run at a time: starting another while one is queued or running is refused. The running window has a Cancel run button that stops it. A cancelled run is still counted against your quota.

When a result is a mechanism

If a load case moves any node of the tower by more than half the tower height, the model is probably a mechanism — for example a bracing pattern with no diagonals. The run continues, but the compliance banner on the report names those load cases and says their results should not be relied on. The 0.5 × height limit is the program’s own, not a code clause. A load case whose result is not a number stops the analysis, and the report is shown with the ANALYSIS FAILED banner.

Opening an older tower file

When you import a file or reopen a History entry made with an earlier version, a notice above the builder lists:

  • the inputs the current version requires that the file does not state — for example Risk Category, Cyclone region, k3, Dish type, the ladder’s A_eff, the deck area of an IS platform, the ladder ice inputs or the wind speed with ice;
  • any value it filled in exactly from the file itself (a TIA-222-I tower’s risk category, taken from its tornado block or its seismic importance factor);
  • defaults that have changed since the file was written: leg base supports are now pinned, the IS 800 bending check is off unless stated, and a TIA-222-I tower with no wind directions now runs every Table 2-6 direction for each face.

The program never guesses an engineering input for you: fill in the listed items and run again. Results may differ from the earlier run. A file written by a newer version of the program is refused.

Save your results Only the runs you save are kept in History. An unsaved run is replaced by your next run. Saved runs are stored on the server and survive a restart.

11.AI / Rule-Based Guidance

Three optional guidance helpers are available. Each is answered by an AI model (Claude) only when the server it runs on has been set up with an API key; otherwise, or when the AI call fails, a fixed rule-based engine answers instead. The live site may run either way, so do not expect AI answers to always be there. The report’s guidance panel shows which engine answered (rule-based or ✦ Claude AI).

Bracing pattern guidance

While editing a custom bracing pattern, get instant feedback on duplicate members, floating nodes, and bypassed nodes, with suggested fixes.

Tower / results guidance

  • Before running (✦ Review Inputs in the header): flags widening-with-height geometry, panel heights below 1 m or above 6 m, very thin-walled members (D/t > 50), member thicknesses below the IS 17740 Table 3 minimum, a missing Risk Category or a k1 below the table, a missing cyclone region or terrain category, wind speeds outside a plausible 25–75 m/s range, and antenna/ladder elevations outside the tower height.
  • After running (✦ Ask AI, bottom right of the report): type a question or click one of the prompts (Is it safe?, Redesign?, Governing dir?, Drift OK?). It flags max UC > 1.0 (overstressed) or > 0.9 (marginal), drift exceeding the IS 17740:2022 Cl. 10.1.2 limits (3% of height sway, 4° twist), KL/r above the per-role IS 17740 limits (legs 120, diagonals 150, horizontals 200, redundants 250), and identifies the governing wind direction, with suggested next steps (e.g. “increase OD×t of section S3 leg”).
Note Guidance is advisory, not a substitute for engineering judgement or a licensed checker’s sign-off. Treat it the way you would a junior engineer’s first-pass comments.

12.Reading the Report

TabWhat to look for
SummaryTower type & height, section count, max UC ratio, max tip drift vs the IS 17740:2022 Cl. 10.1.2(b) limit of 3% of height (plus 4° twist/sway rotation per Cl. 10.1.2(a)), direction envelope & governing member forces, (if enabled) dynamic / seismic / ice panels, and Scope of this report: what this run checked and what it did not (also printed in the PDF). Read it before relying on the report
Geometry & Weights3D lattice view, per-section panel breakdown and member profiles/weights — confirm the model matches what you intended before trusting the numbers
Wind LoadPer-section z_mid, k2, Vz, pz, solidity φ, Cf for legs/diagonals/horizontals, D·V̄d (on the hourly-mean speed) and flow regime, resulting wind force per direction
AntennasPer-antenna elevation, drag coefficient, projected area, and resulting wind force per direction (only shown if antennas were defined)
Nodal LoadsFactored nodal loads applied to the 3D lattice per load combination
Lattice ForcesAxial (and, for beam elements, moment) member forces from the OpenSeesPy solve per load combination
DisplacementsNode displacements (mm) per load combination and the tip-drift envelope across all wind directions
CapacityUC ratio per member type per section (enveloped over every strength combination), governing mode (tension/compression), KL/r, pass/fail. Click a row for the step-by-step working. A † marks a member whose net section and block shear were not checked because its connection was not declared
ConnectionsFlange splice (IS 800 + EN 1993-1-8) and bracing shear/bearing checks (IS 800 §10). Each connection reads OK, OVERSTRESSED (a strength ratio above 1.0) or DETAILING (a spacing, edge-distance or bolt-size rule is broken; this does not enter the ratio)
Support ReactionsBase node reactions (Rx, Ry, Rz, Mx, My, Mz) per load combination

On a TIA-222-I tower the tabs show the TIA quantities instead, and the check is LRFD — see T10. The rest of this section describes the IS report.

The UNITS tile in the strip of headline figures at the top of the report switches the displayed units between SI and US customary (SI ⇄ US), and ↓ Export CSV at the foot of the tables saves every table of the open tab to one CSV file. Read the compliance banner at the top of the Summary before the numbers: it lists the warnings of the run (inputs accepted with a warning, members not checked, load cases that look like a mechanism, and similar). A red ANALYSIS FAILED banner above it means the analysis did not complete.

The 3D viewer in the Geometry tab also has Deflected shape and Force colours toggles that redraw the real lattice at its displaced position (scaled) and colour members by force for the selected wind direction.

Utilisation ratio (UC)

UC = |Applied Force| / Governing Capacity
  • Tension: governing capacity = the lowest of gross-section yield Tdg, net-section rupture Tdn and block shear Tdb (IS 17740 Cl. 11.1, IS 800 Cl. 6), with the bolt line taken from the section’s connections block. A member with no connection entry is checked on gross yield only; the report says its net section and block shear were NOT CHECKED, and the Summary’s compliance banner names those members.
  • Compression: governing capacity = Perry–Robertson buckling capacity per IS 800 Cl. 7.1, γm0 = 1.10, using buckling curve ‘a’ (α = 0.21) for CHS/pipe and curve ‘c’ (α = 0.49) for angle / double-angle sections (IS 800 Table 10). Bracing members additionally use the IS 17740 Annex F equivalent slenderness. A slender angle (IS 800 Table 2) is checked on its effective area.
  • Bending: only when Bending check on beam elements (IS 800) is on (Tower Type); the leg ratio shown is then the larger of the axial ratio and the combined axial-and-bending ratio.

Tension and compression envelopes are tracked separately per member/section, so a larger tension force can never mask a smaller-but-governing compression case.

Pass/Fail

A member passes when UC ≤ 1.0 and its KL/r is within the per-role limit (IS 17740 with Amendment 1: legs 120, diagonals 150, horizontals 200, redundants 250). Tip drift vs the IS 17740:2022 Cl. 10.1.2 limits (3% of height; 4° rotation) is a serviceability flag, not a strength criterion, but should not be ignored.

13.STAAD.Pro Export

Download a STAAD.Pro .std file of the model your analysis run actually solved — the same geometry, sections and nodal loads — for independent cross-checking or detailed design continuation. Available for IS and TIA-222-I towers. The file is written during the run, so re-run a tower to get a file for it.

  • Coordinate system: Z-up; units: METER, KN on an IS tower, FEET, KIP on a TIA-222-I tower
  • Sections: IS angles from STAAD’s Indian table; AISC angles as a user table written inside the file (STAAD’s own American table lacks many sizes); pipes and solid bars as prismatic properties. A tower with double-angle members cannot be exported to STAAD.
  • All lattice nodes and members, mapped to MEMBER TRUSS (pin-ended, axial only) for Truss/corotTruss elements, or beam members (section properties AX, IZ, IY, IX) for elasticBeamColumn. No shear areas are written, matching the SutranetTower analysis.
  • Material: E = 200000 MPa, ν = 0.30, ρ = 7850 kg/m³
  • Load cases: LC1 dead load (self-weight + antenna & ladder dead weight), LC2 live/maintenance load (the IS 17740 Cl. 7.2.2 climber load where a ladder is defined, and the platform live load where an IS platform is declared; the case is empty when the tower has neither), LC3+ wind per direction (including per-direction ladder wind); combinations per the selected standard (IS 800:2007 Table 4, IS 17740:2022 Table 2, or TIA-222-I §2.3.2). Ice, seismic, tornado and §3.7.1 pattern cases are not exported.

Choosing the STAAD analysis

Pick the analysis next to Export STAAD.Pro before downloading:

  • Match SutranetTower (default) — PDELTA 30 ANALYSIS LARGEDELTA. STAAD reproduces this report: P–Δ is included, P–δ inside members is not. Each load combination is written as its own load case (REPEAT LOAD), because P–Δ results cannot be added together.
  • Linear — PERFORM ANALYSIS with STAAD load combinations. A first-order run; light diagonals and small leg moments can differ from this report, which includes leg P–Δ.
  • Full P–Δ (incl. P–δ) — PDELTA 30 ANALYSIS SMALLDELTA, STAAD’s own default. It also includes bending within each member, which SutranetTower does not model, so leg moments on heavily loaded legs can read 10–20% higher than this report.
Why numbers can still differ slightly With Match SutranetTower the results agree to STAAD’s print precision when your bracing uses corotTruss elements. With the default linear Truss bracing, STAAD’s P–Δ also acts on truss members and SutranetTower’s does not, so lightly loaded diagonals can differ by about 1 kN. Under P–Δ, STAAD reports member shear perpendicular to the undeformed member while SutranetTower reports it perpendicular to the deformed member; the totals balance in both.

14.Accounts & Quota

If the deployment has Firebase authentication configured, you’ll see a sign-in modal on first visit. Each account has a role (free or admin) and a monthly run quota that resets on the 1st of each month; your remaining quota is shown next to your email in the header. Admins can adjust other users’ quotas.

Ways to sign in

OptionHow it works
Continue with Google (Sign up with Google on the Register tab)One-click sign-in with a Google account — a Google popup opens, you pick your account, and you’re in. No password to set or remember. First Google sign-in creates your account automatically. (Shown only when the deployment’s Firebase project has Google sign-in enabled.)
Email & password — RegisterEnter an email and a password (minimum 6 characters), then re-type it in the Confirm password box. The SHOW toggle reveals what you typed so you can check it. Mismatched or too-short passwords are caught before the account is created. Registering accepts the Terms and Privacy Policy.
Email & password — Sign InEnter the email and password you registered with.

Email verification and the welcome email

When you register with email and password, Firebase sends a link to verify your address, and a notice in the app says so. You can use the app straight away; verifying is not required to run analyses. Once the address is verified, the app sends one welcome email with links to the training videos and this manual. It is sent the next time you sign in or the app refreshes your session, so it can arrive up to an hour after you click the link. A Google account is already verified, so its welcome email is sent when the account is created. The emails come from a new sender and are often filed as spam: check your spam folder and mark them “not spam”. Accounts created before the welcome email existed do not get one.

Forgot your password?

On the Sign In tab, click Forgot password?, enter your account email, and click Send reset link. Firebase emails you a secure link to choose a new password — check your inbox (and spam folder). For privacy the app shows the same confirmation whether or not that email is registered, so the message appearing does not by itself confirm an account exists. Password recovery applies to email/password accounts; if you signed up with Google, sign in with the Continue with Google button instead (your password is managed by Google).

Google and email accounts are separate An email/password account and a Google account that happen to share the same email address are treated as two different accounts (each with its own quota). Pick one sign-in method per person and stick with it.
Open-mode deployments If the server has no Firebase service account configured, authentication is fully disabled: every visitor is treated as an anonymous admin with unlimited runs, no sign-in modal appears, and the Google button is hidden.

15.Limitations

LimitationDetail
180-second analysis timeoutA run exceeding 180 s is aborted server-side and reported as a timeout error
20-section capA tower with more than 20 sections is rejected outright (proof-of-concept memory guard on a ~1 GB server)
Unsaved runs are not keptOnly saved runs stay in History. An unsaved run is replaced by your next run, and a run that was in progress when the server restarted ends as an error
India-only wind lookupLat/lon → wind speed lookup only covers lat −10…40, lon 60…100; elsewhere, including every TIA-222-I site, enter wind parameters manually
Local bucklingOn IS towers a slender angle (IS 800 Table 2) is checked in compression on a reduced effective area, and a pipe too thin for the table is refused. Lateral-torsional buckling of an angle leg in bending is not checked. On TIA-222-I towers local buckling is included through F′y (§4.5.4.1)
TIA-222-I scopeSelf-supporting lattice towers only; no anchor rods, base plates, guy link plates or slip-critical connections; known gaps are listed in T10
Base fixityLeg bases are pinned (the default) or fixed, as chosen under Tower Type; no partial/spring foundation fixity is modelled
Linear-elastic material onlyNo plastic hinge / inelastic analysis, no fatigue, no corrosion allowance (P–Δ on the legs is captured on every run; bracing adds its own geometric nonlinearity only where corotTruss is chosen)
First-mode dynamic gust onlyThe Cl. 10.2 gust-factor dynamic wind, IS 1893-4 seismic and Cl. 7.2.4 ice effects are implemented, but the dynamic wind uses a first-mode (f₁) estimate — a full multi-mode resonant/damping analysis is not performed
Fixed DVd thresholdThe subcritical/supercritical flow split for round members is fixed at D·V̄d = 6 m²/s (V̄d = design hourly-mean speed), as in IS 875 Part 3 Tables 34/35, with no user override
Library reloadEdits to the bracing library may require a server restart to take effect, depending on deployment
This is a first-pass design/check tool It is not a substitute for a licensed structural engineer’s detailed design, connection design, foundation design, or code compliance sign-off.

16.Best Practices

  • Start from the example tower and modify incrementally rather than building from a blank slate — it’s a known-valid baseline.
  • Run “Review Inputs” before every analysis, especially after large geometry or bracing changes — it catches common modelling mistakes for free.
  • Check the Geometry tab first after every run, before trusting any numbers — a wrong bracing pattern or panel count produces a structurally different (and silently wrong) model.
  • Keep panel heights moderate (roughly 1–6 m) — very short or very tall panels distort solidity ratio and force-coefficient assumptions.
  • Use more/shorter sections at the base, where wind moment and axial load are highest, and fewer/taller sections near the top.
  • Cross-check critical designs against the STAAD export, particularly when UC is close to 1.0 or when you’ve switched diagonals to elasticBeamColumn.
  • Export your tower JSON after every meaningful change, and Save runs you want to keep — an unsaved run is replaced by your next run.
  • Validate custom bracing patterns in the Bracing Library tab before using them in a real tower — fix any duplicate-member, floating-node, or bypassed-node errors immediately.
  • Treat AI/rule-based guidance as a second opinion, not a final verdict — always apply engineering judgement on top of it.

17.Troubleshooting

SymptomLikely causeFix
“Too many sections (POC limit is 20 sections)”Tower exceeds the 20-section capMerge adjacent sections or reduce subdivisions
“Analysis timed out (> 180s)”Model too large/complex (many sections, fine bracing, many wind directions)Reduce wind directions analysed, simplify bracing, or split into fewer/larger sections
“Slope N: declared height … does not match the sum of its section heights”A slope’s height ≠ the sum of its section heightsAdjust the slope height or the section heights so they add up (see Slopes & Sections)
“Section …: num_panels × panel_height does not match the section height”Panel subdivision doesn’t tile the sectionSet panel_height = height / num_panels, or adjust num_panels/height
Bracing pattern won’t saveDuplicate member, floating extra node, or bypassed nodeUse the Bracing Library editor’s validation message to locate and fix the offending node/member
“bracing pattern … is only valid for N-leg towers”Pattern’s applicable_legs doesn’t include the current Tower TypePick a compatible pattern, or mark the pattern applicable to this leg count in the Bracing Library
Wind lookup says “not found”Coordinates outside the Indian subcontinent boundsEnter basic_wind_speed_ms and terrain_category manually
Job/report disappearedThe run was not saved and a later run replaced itRe-run the analysis and use Save to keep it in History
“… is required … There is no default”The file is from an earlier version, or a required input is blankFill in the inputs listed in the notice above the builder (see Opening an older tower file)
“Unknown bracing pattern …”The tower uses a pattern that is not in your Bracing LibraryRe-create or re-save the pattern in the Bracing Library, or choose another pattern for those sections
Run refused: an analysis is already in progressYou have a run queued or runningWait for it, or press Cancel run
Run Analysis shows a message and opens a tree node instead of runningA required input is blank or out of range (Risk Category, Cyclone region, k3, Dish type, ice inputs, seismic zone…)Enter the input named in the message; it is outlined in red in the node that opens
“connections.leg_splice needs "both_legs_connected"”An angle leg has a bolted leg splice that does not say whether the bolts pass through both legsAdd "both_legs_connected": true or false to the leg_splice entry
“bolt_grade … is stated together with …” or “fub_bolt … names no bolt property class”A connection block gives both a bolt class and bolt strengths, or an ultimate strength that is not an IS 800 Table 1 classGive bolt_grade alone (e.g. "8.8"), or give fyb_bolt with fub_bolt
Compliance banner says a load case “is probably a mechanism”A node moved more than half the tower height in that case; usually a bracing pattern that leaves part of the tower unbracedCheck the bracing pattern and the Geometry tab; do not rely on that case’s results (see Running the Analysis)
Memory error on large towers~1 GB VM memory guard exceededReduce section/node count, fewer wind directions, simpler bracing
UC > 1.0 on a memberMember undersized for the governing load combinationIncrease OD×t (pipe) or designation size (angle) for that section’s member; re-run

18.Glossary

Bracing editor & geometry

These are the terms used inside the Bracing Library editor and the pattern schema (bracings.json). A pattern is always authored on one face and replicated to every face by rotational symmetry, so most terms describe a single face and how members reach across to their neighbours.

TermMeaning
Face (F0, F1…)One flat side of the tower, the panel between two adjacent legs. A 3-leg tower has 3 faces, a 4-leg tower 4. The F0/F1… labels in the 3D editor are face indices, used to pick adjacent vs opposite faces deliberately.
Corner node (bot_L, bot_R, top_L, top_R)The four corners of a face panel — bottom/top ends of the two legs (left/right) that bound the face. Left/right are as seen looking at the face from outside.
Extra nodeA user-placed point beyond the four corners, sitting at fraction t along a member or leg. Used as an endpoint for further members. Created by Add Node / splitting a member.
t (position)Interpolation fraction from a member’s from end (t = 0, start) to its to end (t = 1, end). A split node at t = 0.25 sits 25 % of the way from the from node. Clamped to 0.05–0.95 so a node can’t land exactly on an endpoint.
X-intersect nodeA node placed at the geometric crossing of two lines (4-click), e.g. the centre of an X-brace. Because it isn’t on a single member it can’t anchor a ring or hip.
Face memberA member whose both ends lie on the same face (diagonal, horizontal, or redundant). In-plane bracing of that panel; replicated to every face.
DiagonalA face member running corner-to-corner across a panel — the primary bracing that carries shear.
Horizontal (member)A face member lying horizontally within one face (e.g. the mid horizontal of a K-brace). In-plane only — it does not go around the corner to the next face.
Horizontal ringA horizontal member repeated around the polygon, connecting the same node on two adjacent faces. Forms a closed loop tracing the section outline — it frames a diaphragm level and ties neighbouring legs. Schema: rings. Authored by clicking the same node on two adjacent faces → “Horizontal ring”.
Redundant linkAny cross-face connection (schema redundant_links: {from, to, face_offset, tag}). Covers hips and plan bracing — anything joining nodes on different faces.
face_offsetHow many faces around the polygon the target face is from the source: 0 = same face, ±1 = adjacent (a hip), numLegs/2 = opposite (plan bracing).
Hip memberA cross-face member to an adjacent face (face_offset = ±1). Legacy hips schema, now expressed as a redundant link; gives an interior node out-of-plane restraint.
Plan bracing (“cross”)A cross-face member to the opposite face (face_offset = numLegs/2) — a diagonal across the section plan. On a 4-leg square two of these make an X in plan. Stops the section racking/twisting; even-leg towers only (a triangle plan is already rigid).
cross_nodeA split point placed on a cross-face link (it resolves to a point between two faces). Lets one redundant link be split into two segments meeting at a real node.
Crossover / chainAn X-brace split at its crossover into sub-segments. The full-length “chain” drives a separate out-of-plane slenderness check (IS 17740 Annex F F-1 / Cl. 12.4).
TagShort label identifying a redundant or link (r1, rl1, plan1…) so it can be assigned its own member section. Hover a member/node in the 3D editor to see its tag/label.
ops_elementThe OpenSees element type used for a member: corotTruss, Truss, or elasticBeamColumn (see the analysis terms below).

Analysis & code

TermMeaning
UCUtilisation/unity check ratio — applied force divided by governing capacity; ≤ 1.0 = safe
KL/rEffective slenderness ratio (effective length / radius of gyration); per-role limits per IS 17740 (with Amendment 1): legs 120, diagonals 150, horizontals 200, redundants 250
RedundantSecondary bracing member that subdivides a main member’s unbraced length; designed to a minimum bracing resistance (IS 17740 Cl. 10.4.2 / Annex C). See also Redundant link for the cross-face form.
Vb / VzBasic wind speed (10 m, flat open terrain) / design wind speed at height z
CfForce (drag) coefficient applied to projected member area to get wind force
Solidity ratio (φ)Ratio of projected (solid) member area to gross panel face area — drives Cf
corotTrussCorotational truss element: axial-only, geometrically nonlinear (captures large-displacement / rope effects)
elasticBeamColumnLinear-elastic beam element with full 6-DOF bending/shear/axial stiffness
Tdg / Tdn / TdbDesign tensile capacity by gross-section yielding / by net-section rupture / by block shear (IS 800 Cl. 6.2, 6.3, 6.4)
NdDesign compressive (buckling) capacity, Perry–Robertson method, IS 800 Cl. 7.1
↑ Top