Add site massing model for the Mueang Chi candidate parcel

Models the plot and everything on it in FreeCAD, and writes up the
decisions the modelling forced.

Parcel geometry is traced from the DOL LandsMaps cadastral polygon and
reconciled against that portal's own measured edge lengths (40.86 + 26.61
/ 166.81 / 42.48 + 14.94 / 152.46 m), which the trace reproduces to within
about 1% with 1.67 m of closure error over a 444 m perimeter. Note the
mapped extent comes out near 9,570 sqm against a deed area of 8,266 sqm,
a ~16% gap that needs a surveyor before any offer.

On the site: 60x25 m production building on a 10 degree monopitch, a
45x38 m phase-2 building, roof and carport PV, fire and raw water tanks,
a detached boiler/chiller utility yard, perimeter wall and gate, guard
house, roofed staff parking, and the loading and fire-access roads.

Docs:
- scale.md: expansion headroom for a second building, and the detached
  utility yard, which frees ~126 sqm inside the main shed
- sustainability.md: roof orientation study (rotating the building for
  solar gains under 1 point and costs 4 m of clearance, so it stays
  aligned to the plot), and a new water supply section
- facility-security.md: fire water supply behind the existing
  suppression design

Figures marked as estimates are planning-grade, not engineering
calculations; the PV module spec is a generic placeholder, and zoning for
factory use on this plot is still unverified.
This commit is contained in:
grabowski committed 2026-07-29 23:00:09 +07:00
1 parent c138177f67
commit c4d0e08c9f
12 files changed
+205

No files matched your search

+6
View File
@@ -17,3 +17,9 @@ node_modules/
# Env
.env
.env.local
# FreeCAD auto-backups
*.FCBak
# Playwright MCP session output
.playwright-mcp/
+6
View File
@@ -50,6 +50,12 @@
},
"optional": true,
"requiresAuth": true
},
"freecad": {
"command": "uvx",
"args": [
"freecad-mcp"
]
}
}
}
+30
View File
@@ -103,6 +103,36 @@ occupied spaces. The design position is zoned suppression:
- **Galvanics**: low fire load (aqueous baths); local clean-agent
protection for rectifier cabinets is sufficient.
### Fire water supply
Sprinklers, water mist, and hose reels are only as good as the water behind
them. Mains pressure and flow in Mueang Chi cannot be assumed adequate for a
sprinkler demand, so the site carries its own reserve and pumps.
- **Stored reserve: ~200 m³**, in a dedicated fire water tank (planning
figure: 9 m diameter × 4 m, roughly 204 m³ usable above the pump suction).
Basis is an Ordinary Hazard Group 2 sprinkler demand of about 1,100 L/min
over the design area, plus a 950 L/min hose-stream allowance, held for 90
minutes. **This is a planning estimate, not a fire-engineering
calculation** — the real number comes out of the hydraulic design.
- **Dedicated, not shared**: the reserve is not drawn on by process or
sanitary water, and the tank refills automatically.
- **Fire pump set**: duty pump, standby pump, and a jockey pump holding
ring-main pressure, in a pump house beside the tank. The duty pump needs a
power path that survives a plant trip (diesel drive, or a supply ahead of
the main breaker) — the BESS is not a substitute.
- **Ring main and hydrants** around the building, laid out so an appliance
can reach any elevation, with the yard kept clear for access.
- **Siting**: the tank stands in the front yard between the road and the
building, reachable directly from the frontage without entering the
production yard. At 4 m tall it sits well below the building's 7 m low
eave, so it never shades the roof PV.
**Warehouse racking height drives the real number.** If finished-goods
storage goes above roughly 3.7 m, the commodity classification and sprinkler
design change, and the stored volume grows with them. Fix the racking height
before the fire design is frozen, not after.
The property insurer will drive much of the final specification, so involve
them before the design is fixed. The archive gas system and the BESS
detection affect room layout and belong in the site design brief early.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

+66
View File
@@ -39,6 +39,72 @@ The HVAC budget in the utilities CSV already assumes ~1,500 m² conditioned.
Single story throughout: all heavy equipment needs ground-slab floor
loading (multiple tons per m²).
### Detached utility yard, parking, and what that moves
The massing model puts the boiler and chiller in a **detached utility yard**
alongside the main building rather than inside it, which is what the boiler's
own-room requirement in [facility security](facility-security.md) and biomass
fuel delivery both push toward:
| | Area | Height |
|---|---|---|
| Boiler hall | 66 m² | 6.0 m |
| Biomass fuel store | 42 m² | 5.0 m |
| Chiller room | 60 m² | 5.0 m |
| Cooling tower (outdoor pad) | 10 m² | 3.5 m |
| Flue stack | — | 14 m |
Boiler plus chiller at 126 m² lands inside the 100 to 150 m² the zone table
allows — but moving them out of the main shed frees that floor for
production, so either the main building shrinks by ~126 m² or the program
grows into it. Decide which before the building is priced.
Staff parking is roofed, in the front yard clear of the loading route:
**10 car bays** (25 × 6 m canopy) and **~30 scooter spaces** (14 × 5 m),
carrying a further **~32 kWp** of PV on their canopies. At 4.1 m and 3.5 m
they sit below the main building's 7.0 m low eave, so they cannot shade it.
### Expansion headroom: a second building
Tested against the candidate Mueang Chi parcel, in the massing model at
`factory_building_rough.FCStd`. The whole zone table above fits inside one
60 × 25 m building, so a second one is expansion **beyond** the current
program — doubling pressing capacity, or moving finished goods out to free
production floor — not a gap in it.
| | Phase 1 | Phase 2 | Total |
|---|---|---|---|
| Footprint | 60 × 25 m — 1,500 m² | 45 × 38 m — 1,710 m² | 3,210 m² |
| Roof PV | ~247 kWp | ~251 kWp | **~498 kWp** |
| Tightest boundary clearance | 15.7 m | 3.0 m | |
- **45 × 38 m is the sweet spot.** The plot narrows going south, so past
~45 m of length the width falls away faster than length adds: 40 m gives
1,607 m², 45 m gives 1,723 m², 50 m drops to 1,558 m², and beyond 65 m
nothing useful fits.
- **A 20 m yard** between the buildings covers fire separation and shared
loading off the phase 1 circulation road.
- **Roof form: two-bay sawtooth, shaded rows deliberately left empty.**
A single 38 m monopitch would be the best solar answer — 28 panel rows,
none shaded, ~17% more yield than what is drawn — but it needs a **13.7 m**
high wall. The sawtooth holds the high side to **10.35 m**, at a cost: each
bay falls toward ESE onto the next bay's 3.35 m riser, so the bottom rows
sit in shadow (the lowest is blocked below a 53° sun profile angle). Those
two rows on the first bay are left empty rather than populated, which
trades ~8% of the roof's yield for clean strings, no mismatch losses, and
a maintenance walkway. Building height won this trade; revisit it if
cladding a 13.7 m wall turns out cheaper than the lost generation.
A 7° single pitch (11.7 m high side) sits between the two if wanted.
- **Coverage stays comfortable**: 3,210 m² is 39% of the deed area (34% of
the mapped extent), well under the 50 to 60% typically allowed.
- **The two roofs together clear 500 kWp**, which removes the need for the
ground-mount solar assumed further down this page.
Two caveats. Phase 2's tightest corner sits **3.0 m** from the boundary and
must be checked against the local ผังเมือง setback rule before it is taken as
real. And the plot's zoning for factory use is still unverified — that gates
phase 1 every bit as much as phase 2.
## Land: factory plot
Industrial plots typically allow 50 to 60% building coverage, and the site
+97
View File
@@ -42,6 +42,62 @@ at 10 bar / 180 °C) and the 250 kW cooling system.
- System sizing (kWp, storage, grid-connection model) is open until the site
is chosen.
### Roof design for PV (candidate Mueang Chi site)
Sized against the candidate 5-0-66.5 rai parcel in Mueang Chi (18.4708 N,
98.9642 E), whose narrow skewed shape fixes how the building can sit. Two
findings drove the roof form:
- **Orientation barely matters at this latitude.** An annual geometric
clear-sky model puts the optimum fixed tilt near 18° facing due south, but
the response is very flat — at 10° tilt, swinging the azimuth from due
south to ESE costs under 2%. Rotating the building toward due south would
gain **under one percentage point** of yield while cutting boundary
clearance from 16 m to 12 m. The building therefore stays aligned with the
plot, which also keeps truck circulation on the site's long axis.
- **Roof form matters more than orientation.** The plot puts the long axis on
a 212° bearing, so a symmetric gable would strand half the array on a
WNW-facing slope worth only ~94% of ideal. A **monopitch roof at 10°,
falling toward ESE**, puts the entire roof on one plane at ~98% of ideal
and yields a single uninterrupted rectangular array field — simpler
racking, stringing, and roof penetrations.
10° was chosen over a shallower pitch deliberately: the yield difference
between 6° and 10° is under 0.2%, but northern Thailand's dry-season dust and
burning haze make self-cleaning in the rains worth more than the ~1.8 m of
extra building height the steeper pitch costs.
| Item | Figure |
|---|---|
| Sloped roof plane | ~1,520 m² |
| Module assumed | generic 580 W, 2,278 × 1,134 mm (~225 W/m²) |
| Modules (1 m perimeter strip, walkway every 4 rows) | 425 |
| Installed capacity | **~247 kWp** |
| Array coverage of the roof plane | 72% |
| Expected yield | **~335 to 360 MWh/yr** |
| Share of mature two-shift use (1,000 to 1,500 MWh/yr) | ~25 to 35% |
**No module has been selected.** The 580 W / 2,278 × 1,134 mm figure is a
generic placeholder for the current large-format n-type TOPCon class (the
size and power band shared by Trina Vertex, JA Solar DeepBlue, Longi Hi-MO
and Jinko Tiger Neo in their 570 to 600 W ratings), chosen so the layout
count is realistic. Capacity scales almost linearly with whatever module is
actually procured: the roof fits ~425 modules of that footprint, so a 550 W
module gives ~234 kWp and a 620 W module ~264 kWp. String sizing must then be
matched to the Deye inverters' MPPT voltage window before anything is fixed.
Caveat on method: the tilt/azimuth comparison is a geometric clear-sky model,
so it is reliable for **ranking** orientations but not for absolute energy.
The kWh/kWp figure behind the yield column is the regional 1,400 to 1,500
kWh/kWp/yr assumption, derated to ~98% for the ESE azimuth. Confirm against
PVGIS or a TMY dataset before committing capital.
This supersedes the older "150 to 200 kWp on a ~1,500 m² roof" figure in
[scale](scale.md), which assumed lower module power density; current
large-format modules reach roughly 225 W/m². Roughly 70 m of plot depth
remains undeveloped behind the building for ground-mount, which matters if
the electric-boiler route is chosen.
### Energy efficiency architecture: recover before generating
The deepest efficiency in this plant comes from its own thermodynamics: the
@@ -89,6 +145,47 @@ diesel means a fuel tank with price exposure. The electric and biomass paths
avoid a fossil tank on the property entirely, which matters for both the
sustainability commitments and the BOI story.
## Water supply
The zero-discharge commitment below governs water *leaving* the plant. It
says nothing about water arriving, and that side is still open: **no source
has been confirmed for the candidate site** — PWA mains, a licensed deep
well, or both. That choice drives storage, treatment, and part of the
utilities budget.
Estimated demand at mature two-shift operation (16 h/day):
| Draw | m³/day |
|---|---|
| Cooling tower evaporation | 6.0 |
| Cooling tower blowdown (4 cycles of concentration) | 2.0 |
| Boiler makeup + blowdown (80% condensate return) | 1.6 |
| Galvanics rinse, after the recycling below | 3.0 |
| Domestic, canteen, showers (25 staff) | 2.0 |
| **Total** | **~15, call it ~20 with margin** |
The cooling tower is over half of it — worth remembering when the heat
recovery above is sized, because every kW the feedwater heat pump lifts off
the chiller is also water the tower does not evaporate.
Storage is **two tanks, not one**:
- **Fire reserve ~200 m³** — dedicated, never drawn on by process or
domestic, per [facility security](facility-security.md).
- **Raw/process ~50 m³ usable** (5 m dia × 3 m) — roughly 2.5 days at peak,
feeding a softening/RO skid for boiler feedwater and dosing for the tower.
A **combined ~250 m³ tank**, with the fire volume protected by taking the
process suction from a higher level, is cheaper and has a real side benefit:
process turnover stops the fire reserve going stagnant. Worth pricing — but
only the fire design and the insurer can approve it, so the split above
stands as the safe default until they do.
Open items: confirm the source, its yield and its quality (a well needs a
licence and a pump test; hardness and iron set the treatment spec), and
settle whether racking height pushes the fire reserve past 200 m³ before
either tank is ordered.
## Zero contaminated water
The reference process schematic shows a conventional open "dirty water"