← Back to WIA-ENE-050

πŸ’¨ Direct Air Capture Simulator

Interactive exploration of DAC technology standards

DAC Facility Data Format

Define the structure for Direct Air Capture facility information, capture metrics, and operational data.

Facility Information Schema

{
  "facilityId": "dac-climeworks-001",
  "name": "Orca DAC Facility",
  "location": {
    "latitude": 64.0685,
    "longitude": -21.9479,
    "country": "Iceland",
    "region": "Hellisheidi"
  },
  "technology": {
    "type": "solid-sorbent-dac",
    "sorbent": "amine-functionalized",
    "manufacturer": "Climeworks",
    "model": "Generation-3"
  },
  "capacity": {
    "annualTonsCO2": 4000,
    "modules": 8,
    "captureRate": "0.5 tons/module/day"
  },
  "energySource": {
    "type": "geothermal",
    "provider": "ON Power",
    "renewable": true,
    "energyPerTonCO2": "2.5 MWh"
  },
  "storage": {
    "method": "mineralization",
    "site": "carbfix-hellisheidi",
    "depth": "700-2000 meters",
    "permanence": "permanent"
  },
  "operational": {
    "startDate": "2021-09-08",
    "uptime": 0.92,
    "maintenanceCycle": "quarterly"
  }
}

Real-Time Capture Data

{
  "timestamp": "2025-12-25T10:30:00Z",
  "facilityId": "dac-climeworks-001",
  "capture": {
    "currentRate": "0.48 tons/day",
    "dailyTotal": 3.84,
    "monthlyTotal": 115.2,
    "yearlyTotal": 3840,
    "efficiency": 0.96
  },
  "energy": {
    "currentConsumption": "120 kW",
    "dailyTotal": "2.88 MWh",
    "specificEnergy": "2.4 MWh/ton CO2",
    "renewablePercentage": 100
  },
  "environmental": {
    "ambientCO2": "415 ppm",
    "temperature": "12Β°C",
    "humidity": "65%",
    "pressure": "1013 hPa"
  },
  "sorbent": {
    "cycleNumber": 1247,
    "saturation": 0.85,
    "expectedLifetime": 10000,
    "regenerationTemp": "100Β°C"
  }
}

Try it: Generate Facility Data

Sorbent Efficiency & Optimization Algorithms

Calculate sorbent performance, regeneration cycles, and capture optimization for DAC systems.

Solid Sorbent Efficiency Algorithm

// Calculate sorbent efficiency and lifetime
function calculateSorbentEfficiency(params) {
  const {
    co2Captured,        // tons of CO2 captured
    sorbentMass,        // kg of sorbent material
    cycleNumber,        // current adsorption cycle
    regenerationTemp,   // Β°C
    ambientCO2          // ppm
  } = params;

  // Sorbent loading capacity (decreases with cycles)
  const degradationFactor = Math.exp(-0.0001 * cycleNumber);
  const maxLoading = 3.5; // mmol CO2/g sorbent
  const currentLoading = maxLoading * degradationFactor;

  // Capture efficiency
  const theoreticalCapture = (sorbentMass * currentLoading * 44) / 1e6;
  const efficiency = (co2Captured / theoreticalCapture) * 100;

  // Energy for regeneration (kJ/kg sorbent)
  const regenerationEnergy = 150 + (regenerationTemp - 80) * 2;

  // Estimated remaining lifetime
  const maxCycles = 10000;
  const remainingCycles = maxCycles - cycleNumber;
  const remainingLifetime = remainingCycles * 0.5; // days (2 cycles/day)

  return {
    currentLoading: currentLoading.toFixed(2),
    efficiency: efficiency.toFixed(2),
    regenerationEnergy: regenerationEnergy.toFixed(2),
    remainingLifetime: Math.floor(remainingLifetime),
    degradation: ((1 - degradationFactor) * 100).toFixed(2)
  };
}

Capture Rate Optimization

// Optimize capture rate based on conditions
function optimizeCaptureRate(conditions) {
  const {
    ambientCO2,      // ppm
    temperature,     // Β°C
    humidity,        // %
    airflow,         // mΒ³/min
    energyCost       // $/kWh
  } = conditions;

  // Optimal operating parameters
  const optimalTemp = 20; // Β°C
  const optimalHumidity = 60; // %
  const optimalAirflow = 5000; // mΒ³/min

  // Calculate efficiency factors
  const tempFactor = 1 - Math.abs(temperature - optimalTemp) * 0.02;
  const humidityFactor = 1 - Math.abs(humidity - optimalHumidity) * 0.005;
  const airflowFactor = Math.min(airflow / optimalAirflow, 1.2);

  // Overall efficiency
  const efficiency = tempFactor * humidityFactor * airflowFactor;

  // CO2 capture rate (kg/hour)
  const baseCaptureRate = 50; // kg/hour
  const actualCaptureRate = baseCaptureRate * efficiency;

  // Energy optimization
  const baseEnergy = 300; // kWh/ton CO2
  const energyPerTon = baseEnergy / efficiency;
  const costPerTon = energyPerTon * energyCost;

  return {
    efficiency: (efficiency * 100).toFixed(2),
    captureRate: actualCaptureRate.toFixed(2),
    energyPerTon: energyPerTon.toFixed(2),
    costPerTon: costPerTon.toFixed(2),
    recommendations: getRecommendations(conditions)
  };
}

function getRecommendations(conditions) {
  const recommendations = [];
  if (conditions.temperature > 25) {
    recommendations.push("Consider cooling to improve efficiency");
  }
  if (conditions.humidity < 40) {
    recommendations.push("Low humidity may reduce sorbent performance");
  }
  if (conditions.airflow < 4000) {
    recommendations.push("Increase airflow for better capture rate");
  }
  return recommendations;
}

Try it: Calculate Sorbent Efficiency

CO2 Capture & Storage Protocol

Standard protocols for capture operations, storage procedures, and verification workflows.

Capture Operation Protocol

PROTOCOL: DAC-CAPTURE-001
Version: 1.0

1. PRE-OPERATION CHECKS
   - Verify sorbent condition (saturation < 90%)
   - Check energy supply (renewable source confirmed)
   - Validate ambient conditions (temp, humidity, CO2)
   - Test airflow systems (target: 5000 mΒ³/min)

2. CAPTURE CYCLE
   - Duration: 8-12 hours
   - Air intake through contactor
   - CO2 adsorption onto sorbent material
   - Monitor: CO2 concentration, flow rate, pressure drop
   - Log: timestamp, capture rate, energy consumption

3. REGENERATION CYCLE
   - Heat sorbent to release CO2
   - Temperature: 80-120Β°C (depending on sorbent type)
   - Duration: 2-4 hours
   - Collect concentrated CO2 stream (>95% purity)
   - Cool sorbent for next cycle

4. QUALITY CONTROL
   - Verify CO2 purity (must be >95%)
   - Measure capture efficiency (target >90%)
   - Check for contaminants (water vapor, nitrogen oxides)
   - Record sorbent degradation metrics

5. DATA RECORDING
   - Timestamp all measurements
   - Log energy consumption per ton CO2
   - Record environmental conditions
   - Update facility dashboard

6. SAFETY PROTOCOLS
   - Monitor for CO2 leaks
   - Maintain proper ventilation
   - Emergency shutdown procedures
   - Personnel protective equipment requirements

Storage Protocol

PROTOCOL: DAC-STORAGE-001
Version: 1.0

1. STORAGE METHOD SELECTION

   A. GEOLOGICAL STORAGE
      - Deep saline aquifers (800-2000m depth)
      - Depleted oil/gas reservoirs
      - Requires: Caprock integrity, injectivity tests

   B. MINERALIZATION (Recommended)
      - React CO2 with basalt rock
      - CarbFix method: 90% mineralization in 2 years
      - Permanent storage (>10,000 years)

   C. UTILIZATION
      - Convert to synthetic fuels
      - Building materials (concrete curing)
      - Enhanced oil recovery (EOR)

2. INJECTION PROCESS
   - Compress CO2 to supercritical state (>31Β°C, >73 bar)
   - Pipeline transport to injection site
   - Inject at controlled rate (50-100 tons/day)
   - Monitor injection pressure and temperature

3. MONITORING & VERIFICATION
   - Continuous pressure monitoring
   - Seismic surveys (annually)
   - Groundwater sampling (quarterly)
   - Atmospheric CO2 monitoring above site
   - Satellite InSAR for surface deformation

4. VERIFICATION WORKFLOW
   - Third-party verification required
   - MRV (Monitoring, Reporting, Verification)
   - ISO 27916 compliance (CCS)
   - Generate verifiable credentials
   - Issue carbon removal certificates

5. PERMANENCE GUARANTEE
   - Minimum storage period: 1000 years
   - Insurance requirements
   - Long-term monitoring plan
   - Liability transfer protocols

Try it: Generate Capture Protocol

Carbon Storage & CCS Integration

Integration with carbon storage facilities, CCS infrastructure, and monitoring systems.

Integration Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    DAC FACILITY                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚  β”‚  Air     β”‚β†’ β”‚ Sorbent  β”‚β†’ β”‚   CO2    β”‚                  β”‚
β”‚  β”‚ Intake   β”‚  β”‚ Contactorβ”‚  β”‚ Release  β”‚                  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚  CO2 Compression     β”‚
                         β”‚  (Supercritical)     β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
                         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                         β”‚  Pipeline Transport  β”‚
                         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                     β”‚
        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
        β”‚                            β”‚                        β”‚
   β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”              β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”
   β”‚ CarbFix  β”‚              β”‚  Geological β”‚        β”‚   CO2      β”‚
   β”‚ Mineral. β”‚              β”‚   Storage   β”‚        β”‚ Utilizationβ”‚
   β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜              β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜
        β”‚                           β”‚                       β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚  MRV System    β”‚
                β”‚  - Monitoring  β”‚
                β”‚  - Reporting   β”‚
                β”‚  - Verificationβ”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                        β”‚
                β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”
                β”‚  Carbon Credit β”‚
                β”‚   Registry     β”‚
                β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

API Integration Example

// DAC to Storage Facility Integration
class DACStorageIntegration {
  constructor(facilityId, storageEndpoint) {
    this.facilityId = facilityId;
    this.storageEndpoint = storageEndpoint;
    this.apiKey = process.env.STORAGE_API_KEY;
  }

  // Submit captured CO2 for storage
  async submitCO2(captureData) {
    const payload = {
      facilityId: this.facilityId,
      timestamp: new Date().toISOString(),
      co2Amount: captureData.amount, // tons
      purity: captureData.purity, // percentage
      temperature: captureData.temperature,
      pressure: captureData.pressure,
      storageMethod: captureData.storageMethod,
      certificationRequired: true
    };

    const response = await fetch(
      `${this.storageEndpoint}/api/v1/inject`,
      {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${this.apiKey}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify(payload)
      }
    );

    return await response.json();
  }

  // Get storage verification
  async getVerification(injectionId) {
    const response = await fetch(
      `${this.storageEndpoint}/api/v1/verify/${injectionId}`,
      {
        headers: {
          'Authorization': `Bearer ${this.apiKey}`
        }
      }
    );

    const verification = await response.json();
    return {
      injectionId: verification.id,
      status: verification.status,
      permanence: verification.permanenceYears,
      certificate: verification.certificateUrl,
      carbonCredits: verification.creditsIssued
    };
  }

  // Real-time monitoring data stream
  async streamMonitoring() {
    const ws = new WebSocket(
      `${this.storageEndpoint}/ws/monitoring/${this.facilityId}`
    );

    ws.on('message', (data) => {
      const metrics = JSON.parse(data);
      console.log('Storage metrics:', metrics);
      // Update dashboard, trigger alerts, etc.
    });
  }
}

CCS Infrastructure Integration

Pipeline Networks

Standard: ISO 27913

Pressure: 85-150 bar

Monitoring: Real-time leak detection

Materials: Carbon steel, corrosion-resistant

Storage Sites

Types: Saline aquifers, depleted reservoirs

Depth: 800-3000 meters

Capacity: 1-10 Mt CO2/year

Monitoring: Seismic, pressure, samples

MRV Systems

Standards: ISO 27916, IPCC guidelines

Frequency: Continuous + periodic audits

Parameters: Injection rate, pressure, seismicity

Reporting: Annual verification reports

Carbon Registries

Platforms: Verra, Gold Standard, Puro.earth

Credits: 1 credit = 1 ton CO2 removed

Verification: Third-party auditors

Permanence: >1000 years required

Try it: Generate Integration Config

Carbon Removal Certificates & Verifiable Credentials

QR codes and Verifiable Credentials for carbon capture certification and carbon credit tracking.

Verifiable Credential Structure

{
  "@context": [
    "https://www.w3.org/2018/credentials/v1",
    "https://wia.org/credentials/dac/v1"
  ],
  "type": ["VerifiableCredential", "CarbonRemovalCertificate"],
  "issuer": {
    "id": "did:wia:dac-climeworks-001",
    "name": "Orca DAC Facility",
    "certifications": ["ISO 27916", "ISO 14064-2"]
  },
  "issuanceDate": "2025-12-25T00:00:00Z",
  "expirationDate": null,
  "credentialSubject": {
    "id": "did:wia:capture:2025-12-25-001",
    "type": "CarbonRemoval",
    "amount": {
      "value": 10.5,
      "unit": "tons CO2"
    },
    "captureDate": "2025-12-25",
    "technology": {
      "type": "solid-sorbent-dac",
      "manufacturer": "Climeworks",
      "efficiency": 0.92
    },
    "storage": {
      "method": "mineralization",
      "site": "carbfix-hellisheidi",
      "permanence": "permanent",
      "verifiedBy": "DNV GL"
    },
    "energy": {
      "source": "geothermal",
      "renewable": true,
      "specificConsumption": "2.4 MWh/ton CO2"
    },
    "verification": {
      "standard": "ISO 27916",
      "verifier": "Bureau Veritas",
      "verificationDate": "2025-12-26",
      "reportUrl": "https://verify.wia.org/dac/2025-12-25-001"
    },
    "carbonCredits": {
      "registry": "Puro.earth",
      "serialNumber": "PURO-DAC-2025-12-001",
      "vintage": 2025,
      "status": "active"
    }
  },
  "proof": {
    "type": "Ed25519Signature2020",
    "created": "2025-12-26T08:00:00Z",
    "verificationMethod": "did:wia:dac-climeworks-001#key-1",
    "proofPurpose": "assertionMethod",
    "proofValue": "z5A3k2b..."
  }
}

QR Code Generation

// Generate QR code for carbon removal certificate
function generateCertificateQR(certificateData) {
  const qrData = {
    type: "WIA-ENE-050-Certificate",
    version: "1.0",
    certificateId: certificateData.id,
    facilityId: certificateData.facilityId,
    co2Removed: certificateData.amount,
    date: certificateData.date,
    verificationUrl: `https://verify.wia.org/dac/${certificateData.id}`,
    vcUrl: `https://credentials.wia.org/dac/${certificateData.id}.json`
  };

  // Encode as JSON string
  const qrString = JSON.stringify(qrData);

  // Generate QR code (using library like qrcode.js)
  const qrCode = QRCode.toDataURL(qrString, {
    errorCorrectionLevel: 'H',
    type: 'image/png',
    width: 512,
    color: {
      dark: '#EF4444',  // WIA-ENE color
      light: '#0f172a'   // Background
    }
  });

  return qrCode;
}

// Verify certificate from QR code scan
async function verifyCertificate(qrData) {
  const data = JSON.parse(qrData);

  // Fetch verifiable credential
  const vcResponse = await fetch(data.vcUrl);
  const vc = await vcResponse.json();

  // Verify digital signature
  const isValid = await verifySignature(vc);

  // Check against registry
  const registryStatus = await checkRegistry(
    vc.credentialSubject.carbonCredits.serialNumber
  );

  return {
    valid: isValid && registryStatus.active,
    certificate: vc,
    registryStatus: registryStatus
  };
}

Carbon Credit Tracking

// Carbon credit lifecycle tracking
class CarbonCreditTracker {
  constructor(registryAPI) {
    this.registry = registryAPI;
  }

  // Issue credits after verification
  async issueCredits(captureData) {
    const credits = {
      serialNumber: this.generateSerialNumber(),
      vintage: new Date().getFullYear(),
      amount: captureData.co2Amount,
      methodology: "Puro.earth CDR",
      project: captureData.facilityId,
      status: "issued",
      issued: new Date().toISOString(),
      permanence: captureData.permanenceYears,
      cobenefits: [
        "climate-mitigation",
        "renewable-energy-use",
        "sustainable-development"
      ]
    };

    await this.registry.issue(credits);
    return credits;
  }

  // Transfer credits (for sale/retirement)
  async transferCredits(serialNumber, toAccount, purpose) {
    const transfer = {
      from: this.account,
      to: toAccount,
      serialNumber: serialNumber,
      purpose: purpose, // "sale" or "retirement"
      timestamp: new Date().toISOString()
    };

    if (purpose === "retirement") {
      // Permanent retirement for offsetting
      await this.registry.retire(transfer);
    } else {
      // Transfer ownership
      await this.registry.transfer(transfer);
    }

    return transfer;
  }

  // Get credit provenance
  async getProvenance(serialNumber) {
    const history = await this.registry.getHistory(serialNumber);

    return {
      serialNumber: serialNumber,
      issuance: history.issuance,
      transfers: history.transfers,
      currentOwner: history.currentOwner,
      status: history.status,
      verificationTrail: history.verifications
    };
  }
}

Try it: Generate Carbon Removal Certificate