package test.fips.models.i5; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.devices.Fan; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; import example.energy.BaseEnergyEstimationPlugin; import test.fips.EnvironmentConditions; public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double powerConsumption = 0; Fan fan = (Fan) resource; /*Node node = (Node) fan.getComputingResource(); double Tcpu = 0; for(Processor cpu: node.getProcessors()){ Tcpu = Tcpu + cpu.getThermalInterface().getRecentTemperature().getValue(); } Tcpu = Tcpu/node.getProcessors().size(); if (Tcpu < TFanLow) { powerConsumption = 4; } else if (Tcpu > TFanHigh){ powerConsumption = PFanMax; } */ try { powerConsumption = fan.getAirflowInterface().getPowerConsumption(fan.getAirflowInterface().getAirflowState()); } catch (NoSuchFieldException e) { // } return powerConsumption; } public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double airflow = 0; Fan fan = (Fan) resource; /*double fanEfficiency = 0; try{ fanEfficiency = Double.valueOf(fan.getPowerInterface().getParameters().get("fanEfficiency").get(0).getContent()).doubleValue(); } catch (Exception e){ // } double dp = 1013.25; airflow = fan.getPowerInterface().getRecentPowerUsage().getValue() * fanEfficiency /dp;*/ try { airflow = fan.getAirflowInterface().getAirflow(fan.getAirflowInterface().getAirflowState()); } catch (NoSuchFieldException e) { // } return airflow; } public double estimateTemperature (ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double temperature = EnvironmentConditions.ROOM_TEMPERATURE; return temperature; } }