{
  "id": "competency:meng-eee",
  "code": "CDU-ENG-EEE-900",
  "level": "MEng",
  "name": "Master of Engineering — Electrical & Electronic Engineering",
  "faculty": "Faculty of Engineering and the Built Environment",
  "lineage": [
    {
      "institution": "University of Natal",
      "year": 1994,
      "note": "BEng Electrical and Electronic Engineering — supposed to be"
    }
  ],
  "researchProject": "Power systems for hyperscale datacentres and the GPUs they host",
  "description": "Power budgets, distribution and protection for GPU-dense compute facilities: from the chip TDP to the utility feed, the transformer, the cable, the UPS ride-through, and the solar field that would produce the same energy.",
  "syllabus": [
    "Datacentre power budgeting: IT load, PUE, facility load, annual energy",
    "Transformer sizing: kVA, power factor, growth margin",
    "LV cable sizing: voltage drop and conductor area",
    "UPS autonomy and ride-through",
    "Solar production: STC irradiance, panel efficiency, field area — the SunMinute index"
  ],
  "reference": {
    "PUE": "Power Usage Effectiveness = facility power ÷ IT power (The Green Grid)",
    "STC": "1000 W/m² irradiance, AM1.5 spectrum, 25 °C cell temperature",
    "SunTime (ST)": "1 ST = 1 minute of agentic capacity = 1 Wh = 3.6 kJ. A 6 × 6 cm cell at STC (1000 W/m²) receives 3.6 W and, at 28%, makes one ST an hour; sixty of them (0.214 m²) make one a minute. Priced $1 = R1; a currency is a time zone, the unit never carries one",
    "Copper ρ": "0.0175 Ω·mm²/m at 20 °C",
    "Aluminium ρ": "0.0282 Ω·mm²/m at 20 °C"
  },
  "role": "You are a chartered power systems engineer explaining a datacentre power calculation to a facility owner. State the assumptions, then the numbers, then what they mean for the decision.",
  "feeUsd": 1,
  "version": "1.0.2",
  "qualification": {
    "award": "MEng",
    "nqfLevel": 9,
    "qualificationType": "Professional Master's Degree (HEQSF qualification type 9b)",
    "totalCredits": 180,
    "minCreditsAtExitLevel": 120,
    "iscedFields": [
      "071"
    ],
    "standards": [],
    "registration": "not registered"
  },
  "modules": [
    {
      "code": "CDU-ENG-EEE-900-901",
      "title": "Coursework — the executable units",
      "nqfLevel": 9,
      "credits": 60,
      "prerequisites": [],
      "coRequisites": [],
      "outcomes": [
        "answer every unit of the qualification against its published reference, with the working shown"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "every unit passed once through the seeded assessment (the seeded assessment room)",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [
        "datacentre_power_budget",
        "transformer_sizing",
        "cable_voltage_drop",
        "ups_autonomy",
        "sunminute_index"
      ],
      "notionalHours": 600
    },
    {
      "code": "CDU-ENG-EEE-900-902",
      "title": "Research report",
      "nqfLevel": 9,
      "credits": 120,
      "prerequisites": [
        "CDU-ENG-EEE-900-901"
      ],
      "coRequisites": [],
      "outcomes": [
        "Power systems for hyperscale datacentres and the GPUs they host"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "the research report, assessed against the qualification’s published reference block",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [],
      "notionalHours": 1200
    }
  ],
  "units": [
    {
      "id": "datacentre_power_budget",
      "name": "Datacentre power budget",
      "answers": "How much power and energy does a GPU fleet need at the facility feed, and what solar field would produce it?",
      "example": {
        "gpus": 1024
      },
      "reference": "The Green Grid PUE; STC 1000 W/m²",
      "signature": {
        "input": {
          "gpus": {
            "type": "number",
            "describe": "Number of GPUs",
            "min": 1
          },
          "gpuTdpW": {
            "type": "number",
            "describe": "Thermal design power per GPU",
            "unit": "W",
            "min": 1,
            "default": 700
          },
          "hostOverhead": {
            "type": "number",
            "describe": "CPU, memory, network, storage as a fraction of GPU power",
            "min": 0,
            "max": 3,
            "default": 0.35
          },
          "pue": {
            "type": "number",
            "describe": "Power Usage Effectiveness",
            "min": 1,
            "max": 3,
            "default": 1.3
          },
          "utilisation": {
            "type": "number",
            "describe": "Average utilisation of peak, 0–1",
            "min": 0,
            "max": 1,
            "default": 0.8
          },
          "panelEfficiency": {
            "type": "number",
            "describe": "Solar panel efficiency at STC, 0–1",
            "min": 0.05,
            "max": 0.5,
            "default": 0.21
          },
          "peakSunHours": {
            "type": "number",
            "describe": "Equivalent peak sun hours per day at the site",
            "unit": "h/day",
            "min": 0.5,
            "max": 9,
            "default": 5.5
          }
        },
        "output": {
          "itLoadKw": {
            "type": "number",
            "describe": "IT load at peak",
            "unit": "kW"
          },
          "facilityLoadKw": {
            "type": "number",
            "describe": "Facility load at peak (IT × PUE)",
            "unit": "kW"
          },
          "facilityLoadMw": {
            "type": "number",
            "describe": "Facility load at peak",
            "unit": "MW"
          },
          "annualEnergyMwh": {
            "type": "number",
            "describe": "Annual energy at the stated utilisation",
            "unit": "MWh"
          },
          "solarFieldM2": {
            "type": "number",
            "describe": "Solar field area to produce the annual energy",
            "unit": "m²"
          },
          "solarFieldHectares": {
            "type": "number",
            "describe": "The same area",
            "unit": "ha"
          },
          "sunMinutesPerYear": {
            "type": "number",
            "describe": "Annual energy expressed in SunMinutes (Wh)",
            "unit": "Wh"
          }
        }
      }
    },
    {
      "id": "transformer_sizing",
      "name": "Transformer sizing",
      "answers": "What transformer rating feeds a given load with a power factor and growth margin?",
      "example": {
        "loadKw": 1200
      },
      "reference": "S = P ÷ pf; standard IEC ratings",
      "signature": {
        "input": {
          "loadKw": {
            "type": "number",
            "describe": "Real power demand",
            "unit": "kW",
            "min": 0.1
          },
          "powerFactor": {
            "type": "number",
            "describe": "Load power factor",
            "min": 0.5,
            "max": 1,
            "default": 0.95
          },
          "growthMargin": {
            "type": "number",
            "describe": "Margin for growth, 0–1",
            "min": 0,
            "max": 1,
            "default": 0.25
          }
        },
        "output": {
          "requiredKva": {
            "type": "number",
            "describe": "Apparent power with margin",
            "unit": "kVA"
          },
          "standardKva": {
            "type": "number",
            "describe": "Next standard rating",
            "unit": "kVA"
          },
          "loadingAtStandard": {
            "type": "number",
            "describe": "Loading of the standard unit at today’s load, 0–1"
          }
        }
      }
    },
    {
      "id": "cable_voltage_drop",
      "name": "Cable sizing by voltage drop",
      "answers": "What conductor area keeps the voltage drop within limit over a run, and what is the drop for a given cable?",
      "example": {
        "currentA": 250,
        "lengthM": 80
      },
      "reference": "ΔV = √3 · I · L · ρ / A (3-phase) or 2 · I · L · ρ / A (single-phase), resistive approximation",
      "signature": {
        "input": {
          "currentA": {
            "type": "number",
            "describe": "Load current",
            "unit": "A",
            "min": 0.1
          },
          "lengthM": {
            "type": "number",
            "describe": "One-way run length",
            "unit": "m",
            "min": 0.1
          },
          "systemVoltageV": {
            "type": "number",
            "describe": "System voltage (line-to-line for 3-phase)",
            "unit": "V",
            "min": 12,
            "default": 400
          },
          "phases": {
            "type": "string",
            "describe": "single or three",
            "oneOf": [
              "single",
              "three"
            ],
            "default": "three"
          },
          "conductor": {
            "type": "string",
            "describe": "copper or aluminium",
            "oneOf": [
              "copper",
              "aluminium"
            ],
            "default": "copper"
          },
          "maxDropPercent": {
            "type": "number",
            "describe": "Allowed voltage drop",
            "unit": "%",
            "min": 0.5,
            "max": 10,
            "default": 3
          }
        },
        "output": {
          "minAreaMm2": {
            "type": "number",
            "describe": "Minimum conductor area for the limit",
            "unit": "mm²"
          },
          "standardAreaMm2": {
            "type": "number",
            "describe": "Next standard conductor size",
            "unit": "mm²"
          },
          "dropAtStandardV": {
            "type": "number",
            "describe": "Voltage drop with the standard size",
            "unit": "V"
          },
          "dropAtStandardPercent": {
            "type": "number",
            "describe": "The same drop",
            "unit": "%"
          }
        }
      }
    },
    {
      "id": "ups_autonomy",
      "name": "UPS autonomy",
      "answers": "How long will a battery string carry a load, and what string gives a required ride-through?",
      "example": {
        "loadKw": 500,
        "batteryKwh": 400
      },
      "reference": "Autonomy = usable energy ÷ load power, with inverter efficiency and depth of discharge",
      "signature": {
        "input": {
          "loadKw": {
            "type": "number",
            "describe": "Load on the UPS",
            "unit": "kW",
            "min": 0.1
          },
          "batteryKwh": {
            "type": "number",
            "describe": "Installed battery energy",
            "unit": "kWh",
            "min": 0.1
          },
          "depthOfDischarge": {
            "type": "number",
            "describe": "Usable fraction of the battery",
            "min": 0.1,
            "max": 1,
            "default": 0.8
          },
          "inverterEfficiency": {
            "type": "number",
            "describe": "Inverter efficiency",
            "min": 0.5,
            "max": 1,
            "default": 0.95
          },
          "requiredMinutes": {
            "type": "number",
            "describe": "Ride-through required",
            "unit": "min",
            "min": 0,
            "default": 10
          }
        },
        "output": {
          "autonomyMinutes": {
            "type": "number",
            "describe": "Autonomy at the load",
            "unit": "min"
          },
          "meetsRequirement": {
            "type": "boolean",
            "describe": "Autonomy ≥ required ride-through"
          },
          "requiredBatteryKwh": {
            "type": "number",
            "describe": "Battery needed for the required ride-through",
            "unit": "kWh"
          }
        }
      }
    },
    {
      "id": "sunminute_index",
      "name": "SunMinute index",
      "answers": "How many SunMinutes (Wh) is a quantity of energy, money, or runtime — and what panel area produces it in one minute?",
      "example": {
        "runtimeMinutes": 60
      },
      "reference": "1 ST = 1 Wh = 3.6 kJ; a 6 × 6 cm cell at STC receives 3.6 W and at 28% makes one ST an hour, sixty make one a minute; the defining panel A* = 0.06/η m² (1 m² at 6%, 0.286 m² at 21%, 0.214 m² at 28%); 1 ST priced $1 = R1",
      "signature": {
        "input": {
          "energyWh": {
            "type": "number",
            "describe": "Energy to index",
            "unit": "Wh",
            "min": 0,
            "optional": true
          },
          "runtimeMinutes": {
            "type": "number",
            "describe": "Runtime to index (1 minute = 1 Wh)",
            "unit": "min",
            "min": 0,
            "optional": true
          },
          "panelEfficiency": {
            "type": "number",
            "describe": "Panel efficiency at STC",
            "min": 0.05,
            "max": 0.5,
            "default": 0.21
          }
        },
        "output": {
          "sunMinutes": {
            "type": "number",
            "describe": "SunMinutes (Wh)",
            "unit": "Wh"
          },
          "panelAreaM2ForOneMinute": {
            "type": "number",
            "describe": "Panel area that produces the energy in one minute at STC",
            "unit": "m²"
          },
          "usdAtParity": {
            "type": "number",
            "describe": "At the $1 = 1 SunMinute peg",
            "unit": "USD"
          }
        }
      }
    }
  ]
}