code: def diam_pipe(FlowRate, HeadLoss, Length, Nu, PipeRough, KMinor):
      
      #Inputs do not need to be checked here because they are checked by
      #functions this function calls.
      if KMinor == 0:
          Diam = diam_pipemajor(FlowRate, HeadLoss, Length, Nu,
                                PipeRough).magnitude
      else:
          Diam = max(diam_pipemajor(FlowRate, HeadLoss,
                                    Length, Nu, PipeRough).magnitude,
                     diam_pipeminor(FlowRate, HeadLoss, KMinor).magnitude)
          err = 1.00
          while err > 0.001:
              DiamPrev = Diam
              HLFricNew = (HeadLoss * headloss_fric(FlowRate, Diam, Length,
                                                    Nu, PipeRough
                                                    ).magnitude
                           / (headloss_fric(FlowRate, Diam, Length,
                                            Nu, PipeRough
                                            ).magnitude
                                            + headloss_exp(FlowRate,
                                                           Diam, KMinor
                                                           ).magnitude
                              )
                           )
              Diam = diam_pipemajor(FlowRate, HLFricNew, Length, Nu, PipeRough
                                    ).magnitude
              err = abs(Diam - DiamPrev) / ((Diam + DiamPrev) / 2)
      return Diam
docs: Return the pipe ID that would result in the given total head loss.
  
      This function applies to both laminar and turbulent flow and
      incorporates both minor and major losses.