Source code for SimulationFramework.Elements.rf_deflecting_cavity

from SimulationFramework.Elements.cavity import cavity, elements_Elegant


[docs] class rf_deflecting_cavity(cavity): """ Class defining a transverse deflecting cavity (TDC) element. """ n_kicks: int = 10 """Number of TDC kicks""" n_cells: int | float | None = 1 """Number of cells""" def _write_Elegant(self) -> str: """ Writes the TDC element string for ELEGANT. Returns ------- str or None String representation of the element for ELEGANT """ wholestring = "" etype = self._convertType_Elegant(self.objecttype) string = self.objectname + ": " + etype for key, value in self.objectproperties.items(): # print('RFDF before', key, value) if ( not key == "name" and not key == "type" and not key == "commandtype" and self._convertKeyword_Elegant(key) in elements_Elegant[etype] ): value = ( getattr(self, key) if hasattr(self, key) and getattr(self, key) is not None else value ) key = self._convertKeyword_Elegant(key).lower() # In ELEGANT the voltages need to be compensated # value = abs((self.cells+4.1) * self.cell_length * (1 / np.sqrt(2)) * value) if key == 'voltage' else value # In CAVITY NKICK = n_cells value = 0 if key == "n_kicks" else value if key == "n_bins" and value > 0: print( "WARNING: Cavity n_bins is not zero - check log file to ensure correct behaviour!" ) value = 1 if value is True else value value = 0 if value is False else value # print('RFDF after', key, value) tmpstring = ", " + key + " = " + str(value) if len(string + tmpstring) > 76: wholestring += string + ",&\n" string = "" string += tmpstring[2::] else: string += tmpstring wholestring += string + ";\n" return wholestring