code: def _parcel_profile_helper(pressure, temperature, dewpt):
      
      # Find the LCL
      press_lcl, temp_lcl = lcl(pressure[0], temperature, dewpt)
      press_lcl = press_lcl.to(pressure.units)
  
      # Find the dry adiabatic profile, *including* the LCL. We need >= the LCL in case the
      # LCL is included in the levels. It's slightly redundant in that case, but simplifies
      # the logic for removing it later.
      press_lower = concatenate((pressure[pressure >= press_lcl], press_lcl))
      temp_lower = dry_lapse(press_lower, temperature)
  
      # If the pressure profile doesn't make it to the lcl, we can stop here
      if _greater_or_close(np.nanmin(pressure), press_lcl.m):
          return (press_lower[:-1], press_lcl, np.array([]) * press_lower.units,
                  temp_lower[:-1], temp_lcl, np.array([]) * temp_lower.units)
  
      # Find moist pseudo-adiabatic profile starting at the LCL
      press_upper = concatenate((press_lcl, pressure[pressure < press_lcl]))
      temp_upper = moist_lapse(press_upper, temp_lower[-1]).to(temp_lower.units)
  
      # Return profile pieces
      return (press_lower[:-1], press_lcl, press_upper[1:],
              temp_lower[:-1], temp_lcl, temp_upper[1:])
docs: Help calculate parcel profiles.
  
      Returns the temperature and pressure, above, below, and including the LCL. The
      other calculation functions decide what to do with the pieces.