code: def n_lfom_rows(FLOW,HL_LFOM):
      
      N_estimated = (HL_LFOM*np.pi/(2*width_stout(HL_LFOM,HL_LFOM)*FLOW))
      variablerow = min(10,max(4,math.trunc(N_estimated.magnitude)))
      # Forcing the LFOM to either have 4 or 8 rows, for design purposes
      # If the hydraulic calculation finds that there should be 4 rows, then there
      # will be 4 rows. If anything other besides 4 rows is found, then assign 8
      # rows.
      # This can be improved in the future.
      if variablerow == 4:
          variablerow = 4
      else:
          variablerow = 8
      return variablerow
docs: This equation states that the open area corresponding to one row can be
      set equal to two orifices of diameter=row height. If there are more than
      two orifices per row at the top of the LFOM then there are more orifices
      than are convenient to drill and more than necessary for good accuracy.
      Thus this relationship can be used to increase the spacing between the
      rows and thus increase the diameter of the orifices. This spacing function
      also sets the lower depth on the high flow rate LFOM with no accurate
      flows below a depth equal to the first row height.
  
      But it might be better to always set then number of rows to 10.
      The challenge is to figure out a reasonable system of constraints that
      reliably returns a valid solution.