code: def n_orifices_per_row(self):
          
          # H is distance from the bottom of the next row of orifices to the
          # center of the current row of orifices
          H = self.b_rows - 0.5*self.orifice_diameter
          flow_per_orifice = pc.flow_orifice_vert(self.orifice_diameter, H, con.VC_ORIFICE_RATIO)
          n = np.zeros(self.n_rows)
          for i in range(self.n_rows):
              # calculate the ideal number of orifices at the current row without
              # constraining to an integer
              flow_needed = self.flow_ramp[i] - self.flow_actual(i, n)
              n_orifices_real = (flow_needed / flow_per_orifice).to(u.dimensionless)
              # constrain number of orifices to be less than the max per row and
              # greater or equal to 0
              n[i] = min((max(0, round(n_orifices_real))), self.n_orifices_per_row_max)
          return n
docs: Calculate number of orifices at each level given an orifice
          diameter.