Source code for pyleecan.Methods.Simulation.VarSimu.get_mag_datakeeper

from ....Classes.DataKeeper import DataKeeper


def get_mag_datakeeper(self, symbol_list, is_multi=False):
    """
    Generate DataKeepers to store by default results from magnetic module

    Parameters
    ----------
    self: VarLoad
        A VarLoad object
    symbol_list : list
        List of the existing datakeeper (to avoid duplicate)
    is_multi : bool
        True for multi-simulation of multi-simulation

    Returns
    -------
    dk_list: list
        list of DataKeeper
    """
    dk_list = []
    error_nan = "lambda simu: np.nan"
    if is_multi:
        # Max Average torque Datakeeper
        if "Max_Tem_av" not in symbol_list:
            dk_list.append(
                DataKeeper(
                    name="Max Average Torque",
                    symbol="Tem_av",
                    unit="N.m",
                    keeper="lambda output: max(output.xoutput_dict['Tem_av'].result)",
                    error_keeper=error_nan,
                )
            )
        # Max Peak to Peak Torque ripple
        if "Max_Tem_rip_pp" not in symbol_list:
            dk_list.append(
                DataKeeper(
                    name="Max Peak to Peak Torque ripple",
                    symbol="Max_Tem_rip_pp",
                    unit="N.m",
                    keeper="lambda output: max(output.xoutput_dict['Tem_rip_pp'].result)",
                    error_keeper=error_nan,
                )
            )
        # Max Peak to Peak Torque ripple normalized
        if "Max_Tem_rip_norm" not in symbol_list:
            dk_list.append(
                DataKeeper(
                    name="Max Peak to Peak Torque ripple normalized",
                    symbol="Max_Tem_rip_norm",
                    unit="-",
                    keeper="lambda output: max(output.xoutput_dict['Tem_rip_norm'].result)",
                    error_keeper=error_nan,
                )
            )
    else:
        # Average torque Datakeeper
        if "Tem_av" not in symbol_list:
            dk_list.append(
                DataKeeper(
                    name="Average Torque",
                    symbol="Tem_av",
                    unit="N.m",
                    keeper="lambda out: out.mag.Tem_av",
                    error_keeper=error_nan,
                )
            )
        # Peak to Peak Torque ripple
        if "Tem_rip_pp" not in symbol_list:
            dk_list.append(
                DataKeeper(
                    name="Peak to Peak Torque ripple",
                    symbol="Tem_rip_pp",
                    unit="N.m",
                    keeper="lambda out: out.mag.Tem_rip_pp",
                    error_keeper=error_nan,
                )
            )
        # Peak to Peak Torque ripple normalized
        if "Tem_rip_norm" not in symbol_list:
            dk_list.append(
                DataKeeper(
                    name="Peak to Peak Torque ripple normalized",
                    symbol="Tem_rip_norm",
                    unit="-",
                    keeper="lambda out: out.mag.Tem_rip_norm",
                    error_keeper=error_nan,
                )
            )

    return dk_list