code: def add_becs_from_scf_task(self, scf_task, ddk_tolerance, ph_tolerance):
          
          if not isinstance(scf_task, ScfTask):
              raise TypeError("task `%s` does not inherit from ScfTask" % scf_task)
  
  	# DDK calculations (self-consistent to get electric field).
          multi_ddk = scf_task.input.make_ddk_inputs(tolerance=ddk_tolerance)
  
          ddk_tasks = []
          for ddk_inp in multi_ddk:
              ddk_task = self.register_ddk_task(ddk_inp, deps={scf_task: "WFK"})
              ddk_tasks.append(ddk_task)
  
          # Build the list of inputs for electric field perturbation and phonons
          # Each BEC task is connected to all the previous DDK task and to the scf_task.
          bec_deps = {ddk_task: "DDK" for ddk_task in ddk_tasks}
          bec_deps.update({scf_task: "WFK"})
  
          bec_inputs = scf_task.input.make_bec_inputs(tolerance=ph_tolerance)
          bec_tasks = []
          for bec_inp in bec_inputs:
               bec_task = self.register_bec_task(bec_inp, deps=bec_deps)
               bec_tasks.append(bec_task)
  
          return ddk_tasks, bec_tasks
docs: Build tasks for the computation of Born effective charges and add them to the work.
  
          Args:
              scf_task: ScfTask object.
              ddk_tolerance: dict {"varname": value} with the tolerance used in the DDK run.
                  None to use AbiPy default.
              ph_tolerance: dict {"varname": value} with the tolerance used in the phonon run.
                  None to use AbiPy default.
  
  	Return:
  	    (ddk_tasks, bec_tasks)