function run_hybrid_worker_wrapper(batchIdx) a_s_list = parse_environmental_variable('SCATTERING_LENGTH_RANGE', 85); % Scattering length theta_list = parse_environmental_variable('POLAR_ANGLE_RANGE', 0); % Polar angle phi_list = parse_environmental_variable('AZIMUTHAL_ANGLE_RANGE', 0); % Azimuthal angle N_atoms_list = parse_environmental_variable('NUM_ATOMS_LIST', 90000); % Atom number chunkSize = str2double(getenv('CHUNK_SIZE')); % Create full parameter grid (extendable) [A, T, P, N] = ndgrid(a_s_list, theta_list, phi_list, N_atoms_list); paramGrid = [A(:), T(:), P(:), N(:)]; totalJobs = size(paramGrid, 1); totalBatches = ceil(totalJobs / chunkSize); if batchIdx > totalBatches error('Batch index %d exceeds total batches (%d)', batchIdx, totalBatches); end firstIdx = (batchIdx - 1) * chunkSize + 1; lastIdx = min(batchIdx * chunkSize, totalJobs); % Call worker with this batch of parameters batchParams = paramGrid(firstIdx:lastIdx, :); Scripts.run_hybrid_worker(batchParams, batchIdx); end function vals = parse_environmental_variable(varName, default) str = getenv(varName); if isempty(str) vals = default; elseif startsWith(str, '[') vals = str2num(str); %#ok else vals = eval(str); % Trust only controlled environments end end