Untitled

 avatar
unknown
matlab
a month ago
2.7 kB
4
Indexable
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