def _set_component_carbon()

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]