@property
@lru_cache()
def configurations(self):
    'Determine the electronic configurations involved in a calculation.'
    valenceSubshell = self.element.valenceSubshell
    valenceOccupancy = self.element.valenceOccupancy
    configurations = list()
    initialConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(valenceSubshell,), occupancies=(valenceOccupancy,))
    configurations.append(initialConfiguration)
    if self.experiment.isOneStep:
        if (not self.experiment.excitesToVacuum):
            valenceOccupancy += 1
        (coreSubshell,) = self.edge.coreSubshells
        (coreOccupancy,) = self.edge.coreOccupancies
        coreOccupancy -= 1
        finalConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(coreSubshell, valenceSubshell), occupancies=(coreOccupancy, valenceOccupancy))
        configurations.append(finalConfiguration)
    else:
        if (not self.experiment.excitesToVacuum):
            valenceOccupancy += 1
        (core1Subshell, core2Subshell) = self.edge.coreSubshells
        (core1Occupancy, core2Occupancy) = self.edge.coreOccupancies
        core1Occupancy -= 1
        core2Occupancy -= 1
        intermediateConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(core1Subshell, valenceSubshell), occupancies=(core1Occupancy, valenceOccupancy))
        configurations.append(intermediateConfiguration)
        if (core2Subshell == valenceSubshell):
            finalConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(valenceSubshell,), occupancies=((valenceOccupancy - 1),))
        else:
            finalConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(core2Subshell, valenceSubshell), occupancies=(core2Occupancy, valenceOccupancy))
        configurations.append(finalConfiguration)
    return configurations
Determine the electronic configurations involved in a calculation.
@property
@lru_cache()
def configurations(self):
    
    valenceSubshell = self.element.valenceSubshell
    valenceOccupancy = self.element.valenceOccupancy
    configurations = list()
    initialConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(valenceSubshell,), occupancies=(valenceOccupancy,))
    configurations.append(initialConfiguration)
    if self.experiment.isOneStep:
        if (not self.experiment.excitesToVacuum):
            valenceOccupancy += 1
        (coreSubshell,) = self.edge.coreSubshells
        (coreOccupancy,) = self.edge.coreOccupancies
        coreOccupancy -= 1
        finalConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(coreSubshell, valenceSubshell), occupancies=(coreOccupancy, valenceOccupancy))
        configurations.append(finalConfiguration)
    else:
        if (not self.experiment.excitesToVacuum):
            valenceOccupancy += 1
        (core1Subshell, core2Subshell) = self.edge.coreSubshells
        (core1Occupancy, core2Occupancy) = self.edge.coreOccupancies
        core1Occupancy -= 1
        core2Occupancy -= 1
        intermediateConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(core1Subshell, valenceSubshell), occupancies=(core1Occupancy, valenceOccupancy))
        configurations.append(intermediateConfiguration)
        if (core2Subshell == valenceSubshell):
            finalConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(valenceSubshell,), occupancies=((valenceOccupancy - 1),))
        else:
            finalConfiguration = Configuration.fromSubshellsAndOccupancies(subshells=(core2Subshell, valenceSubshell), occupancies=(core2Occupancy, valenceOccupancy))
        configurations.append(finalConfiguration)
    return configurations