Untitled
function [E_out, P_elec, unmetDemand] = bioyearlyrequired(m_biomass, hourlyDemand, params, plotGraph) % Input Parameters % m_biomass: Initial biomass available (kg) % hourlyDemand: Array of hourly demand data (kW) % params: Structure containing biomass system parameters % plotGraph: Boolean to indicate whether to plot results % Extract parameters CV = params.CV; % Calorific value of biomass (MJ/kg) eta = params.eta; % Efficiency of the system (0 to 1) system_capacity = params.capacity; % Maximum system capacity (kg/hour) conversion_rate = params.conversion_rate; % Energy-to-power conversion rate (kW/MJ) % Initialize variables numHours = length(hourlyDemand); biomassUsed = zeros(numHours, 1); %zero matrix , will be filled in the loop energyOutput = zeros(numHours, 1); powerOutput = zeros(numHours, 1); unmetDemand = zeros(numHours, 1); % Biomass stockpile remainingBiomass = m_biomass; %set remaining biomass as initial biomass before entering loop % Hourly calculations for hour = 1:numHours % Calculate required energy and biomass requiredEnergy = hourlyDemand(hour) / conversion_rate; % MJ requiredBiomass = requiredEnergy / (CV * eta); % kg % Check if biomass is sufficient if requiredBiomass > remainingBiomass % Biomass is insufficient biomassUsed(hour) = remainingBiomass; remainingBiomass = 0; unmetDemand(hour) = hourlyDemand(hour) - (biomassUsed(hour) * CV * eta * conversion_rate); else % Biomass is sufficient biomassUsed(hour) = requiredBiomass; remainingBiomass = remainingBiomass - requiredBiomass; unmetDemand(hour) = 0; end % Calculate energy and power output E_out_temp = biomassUsed(hour) * CV * eta; % MJ P_elec_temp = E_out_temp * conversion_rate; % kW % Store results energyOutput(hour) = E_out_temp; powerOutput(hour) = P_elec_temp; end % Total outputs E_out = sum(energyOutput); % Total energy output (MJ) P_elec = sum(powerOutput); % Total power output (kW) % Plot results if requested if plotGraph % Plot biomass usage figure; plot(1:numHours, biomassUsed, 'b-', 'LineWidth', 1.5); xlabel('Hour'); ylabel('Biomass Used (kg)'); title('Hourly Biomass Usage'); grid on; % Plot unmet demand figure; plot(1:numHours, unmetDemand, 'r-', 'LineWidth', 1.5); xlabel('Hour'); ylabel('Unmet Demand (kW)'); title('Hourly Unmet Demand'); grid on; end end
Leave a Comment