ows: 1. Initialize a metric value M to 0. 2. Search through every combination of user UE and frequency resource n to find the highest metric (achievable rate) for the first user, where the first user can be selected for example based on QoS priority, SNR value, or randomly. 3. Allocate the user UE and carrier ("n") by setting this carrier to nonvalid (i.e., occupied). 4. Continue steps 2 and 3 for remainder users and/or frequency resources until either group is exhausted. In practice, this algorithm translates to a recurring search for the maximum value (achiev- able rate) in a two-dimensional array (users, frequency resources). Secondary and remainder user(s) selection: multiple input multiple output scheduling Considering a MIMO implementation, this stage involves the selection of paired users with the primary user where a paired user is selected based on channel orthogonality with the 254 Open Radio Access Network (O-RAN) Systems Architecture and Design primary user as described earlier, either by calculation of the coefficient of correlation or by optimizing the selected user pool through calculation of the condition number of the com- bined channel matrix-or by a combination of both techniques as shown in Ref.4 Assuming scheduling based on channel matrix condition number, the method is as follows: 1. Initialize the combined channel matrix to 0. 2. Decide the first user on other metrics, such as time/frequency-domain scheduling as shown above. 3. Increase user count by 1. Calculate the condition number associated with the combined channel vector of the already selected users and each additional candidate. 5. Select the candidate user for which the resulting condition number is lowest or below a given threshold. 6. Continue until maximum number of users is selected or threshold conditions are no longer met. Intuition tells us that the math involved with MIMO scheduling is complex and hence compute intensive. A simplification of this algorithm is achieved by preselecting the users into groups, where the orthogo