in analysis/GreenSKU-Framework/src/carbon_model.py [0:0]
def _set_component_carbon(self) -> None:
"""Set the emissions for the various components."""
amortized_components = ['server', 'rack', 'dc']
for key, value in self.data.items():
factor = self.params['PUE']
factor *= self.params['power_factor']
capex_factor = 1.0
if key in amortized_components:
total_opex = 0
for _key, component in value.items():
if 'number' not in component:
component['number'] = 1
total_opex += get_opex(component['power'],
self.allocated_spec,
self.component_derate_curves[_key],
component['number'],
self.params['emissions_factor'],
self.params['lifetime'],
factor=factor)
self.component_operational[key] = total_opex
self.component_embodied[key] = get_dict_capex(value,
cost='carbon',
server_lifetime=self.params['lifetime'])
continue
if key == 'cpu':
factor *= self.params['voltage_regulator_overhead']
factor *= self.params['cpu_efficiency']
self.component_operational[key] = get_opex(value['power'],
self.allocated_spec,
self.component_derate_curves[key],
value['number'],
self.params['emissions_factor'],
self.params['lifetime'],
factor=factor)
self.component_embodied[key] = get_capex_from_dict(value,
cost='carbon',
factor=factor,
server_lifetime=self.params['lifetime'])
for key, value in self.component_operational.items():
self.component_carbon[key] = value + self.component_embodied[key]