package test.thermal.recs.plugins.energy; import example.energy.BaseEnergyEstimationPlugin; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.devices.Device; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; public class RecsFanEEP extends BaseEnergyEstimationPlugin { public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { return ThermalConstants.fanPower; } public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double temp = 0; // thermal constants double tin = ThermalConstants.tin; double Q = ThermalConstants.Q; double C = ThermalConstants.C; double delta1 = ThermalConstants.delta1; double delta2 = ThermalConstants.delta2; double ro = ThermalConstants.ro; Device device = (Device) resource; Integer device_id = Integer.parseInt(device.getName().split("_")[1]); String device_type = device.getName().split("_")[0]; if (device_type.equals("Outlet")){ double power1 = 0; double power2 = 0; for(PhysicalResource compResource: device.getComputingResource().getChildren()){ Integer node_id = Integer.parseInt(compResource.getName().split("_")[1]); if(node_id == device_id){ power2 = compResource.getPowerInterface().getRecentPowerUsage().getValue(); }else if(node_id - device_id == 9){ power1 = compResource.getPowerInterface().getRecentPowerUsage().getValue(); } } temp = tin + delta1 * (power1/(Q * C * ro)) + delta2 * (power2/(Q * C * ro));; }else if (device_type.equals("Inlet")){ temp = tin; } //System.out.println(resource.getName()); return temp; } }