code: def on_ok(self, sender):
          
          logger.debug("in on_ok with sender %s" % sender)
  
          if sender == self.ion_task and not self.transfer_done:
              # Get the relaxed structure from ion_task
              ion_structure = self.ion_task.get_final_structure()
  
              # Transfer it to the ioncell task (we do it only once).
              self.ioncell_task._change_structure(ion_structure)
              self.transfer_done = True
  
              # Unlock ioncell_task so that we can submit it.
              self.ioncell_task.unlock(source_node=self)
  
          elif sender == self.ioncell_task and self.target_dilatmx:
              actual_dilatmx = self.ioncell_task.get_inpvar('dilatmx', 1.)
              if self.target_dilatmx < actual_dilatmx:
                  self.ioncell_task.reduce_dilatmx(target=self.target_dilatmx)
                  self.history.info('Converging dilatmx. Value reduce from {} to {}.'
                              .format(actual_dilatmx, self.ioncell_task.get_inpvar('dilatmx')))
                  self.ioncell_task.reset_from_scratch()
  
          return super().on_ok(sender)
docs: This callback is called when one task reaches status S_OK.
          If sender == self.ion_task, we update the initial structure
          used by self.ioncell_task and we unlock it so that the job can be submitted.