def METHOD_NAME(self, **kwargs):
    # struct info - only for orientation, no structural solution is performed
    struct_ini_step = self.data.structure.timestep_info[-1]
    for self.data.ts in range(len(self.data.aero.timestep_info),
                              len(self.data.aero.timestep_info) + self.settings['n_time_steps']):
        aero_tstep = self.data.aero.timestep_info[-1]
        self.aero_solver.update_custom_grid(struct_ini_step, aero_tstep)
        force_coeff = 0.0
        if self.settings['include_unsteady_force_contribution']:
            force_coeff = 1.0
        if self.data.ts < 5:
            force_coeff = 0.0
        # run the solver
        if force_coeff == 0.:
            unsteady_contribution = False
        else:
            unsteady_contribution = True
        self.data = self.aero_solver.METHOD_NAME(aero_tstep=aero_tstep,
                                         structure_tstep=struct_ini_step,
                                         convect_wake=True,
                                         unsteady_contribution=unsteady_contribution)
        self.aero_solver.add_step()
        self.data.aero.timestep_info[-1] = aero_tstep.copy()
        self.data.structure.timestep_info.append(struct_ini_step.copy())
        if self.print_info:
            self.residual_table.print_line([self.data.ts,
                                            self.data.ts * self.dt])
        if self.with_postprocessors:
            for postproc in self.postprocessors:
                self.data = self.postprocessors[postproc].METHOD_NAME(online=True)
    if self.print_info:
        cout.cout_wrap('...Finished', 1)
    return self.data