High difference in BLER and throughput for NOMA pairs

Dear VCCS team,

I am doing a simulation of a simple system that consists of 2 pico base stations, 3 pedestrian and 3 vehicular users all with predefined positions. For the first scenario, I am analyzing system without NOMA pairing and that gives me expected performance as given on the following photo. Throughput for user 5 is 1.37 Mbps and for user 6 is 4.07 Mbps.

In the second scenario I am using NOMA pairing by deltadB=3 dB which makes one NOMA pair in the simulation: 5th and 6th user. When I get performance results I see that BLER for these users is very high which results in throughput being 0 Mbps for both users in NOMA pair. Is there some reasoning behind this behaviour? The results are given in the following photo:

I tested similar scenario with using just one pico base station and I get the results that I expect: when using NOMA getting higher throughput for cell center users and lower throughput for cell edge users in regards to the same scenario without NOMA.

Here is my scenario file:

> function params = HetNet(params)
> 
> %% General Configuration
> % time config
> params.time.slotsPerChunk = 10;
> params.time.feedbackDelay = 1; % small feedback delay
> 
> % set NOMA parameters
> params.noma.interferenceFactorSic	= 1; % no error propagation
> params.noma.deltaPairdB             = 3;
> params.noma.mustIdx                 = parameters.setting.MUSTIdx.Idx01;
> % perform NOMA transmssion even if far user CQI is low - this will increase th number of failed transmissions
> params.noma.abortLowCqi             = false;
> 
> % disable HARQ - not compatible with NOMA
> params.useHARQ = false;
> 
> % define the region of interest & boundary region
> params.regionOfInterest.xSpan = 300;
> params.regionOfInterest.ySpan = 300;
> 
> % set carrier frequency and bandwidth
> params.carrierDL.centerFrequencyGHz             = 1.805; % in GHz
> params.transmissionParameters.DL.bandwidthHz    = 10e6; % in Hz
> 
> % associate users to cell with strongest receive power - favor femto cell association
> params.cellAssociationStrategy                      = parameters.setting.CellAssociationStrategy.maxReceivePower;
> params.pathlossModelContainer.cellAssociationBiasdB = [0, 0, 0];
> 
> % weighted round robin scheduler - scheduling weights are set at the user
> params.schedulerParameters.type = parameters.setting.SchedulerType.roundRobin;
> 
> % additional object that should be saved into simulation results
> params.save.losMap          = true;
> params.save.isIndoor        = true;
> 
> %% pathloss model container
> indoor	= parameters.setting.Indoor.indoor;
> outdoor	= parameters.setting.Indoor.outdoor;
> LOS     = parameters.setting.Los.LOS;
> NLOS	= parameters.setting.Los.NLOS;
> 
> % pico base station models
> pico = parameters.setting.BaseStationType.pico;
> params.pathlossModelContainer.modelMap{pico,	indoor,     LOS}    = parameters.pathlossParameters.FreeSpace;
> params.pathlossModelContainer.modelMap{pico,	indoor,     NLOS}   = parameters.pathlossParameters.FreeSpace;
> params.pathlossModelContainer.modelMap{pico,	outdoor,	LOS}    = parameters.pathlossParameters.FreeSpace;
> params.pathlossModelContainer.modelMap{pico,	outdoor,	NLOS}   = parameters.pathlossParameters.FreeSpace;
> 
> 
> %% Configuration of the Network Elements
> % pico base stations along a straight street
> posPico    =  [-100,100;...
>                 0,0];
> streetPicoBS = parameters.basestation.PredefinedPositions();
> streetPicoBS.positions                  = posPico;
> streetPicoBS.antenna                    = parameters.basestation.antennas.Omnidirectional;
> streetPicoBS.antenna.nTX                = 1;
> streetPicoBS.antenna.height             = 5;
> streetPicoBS.antenna.baseStationType    = parameters.setting.BaseStationType.pico;
> streetPicoBS.antenna.transmitPower      = 35;
> params.baseStationParameters('pico') = streetPicoBS;
> 
> 
> % pedestrian users
> % %  poissonPedestrians = parameters.user.Poisson2D();
> posPed    =  [-50,50, 100;...
>                 100,-100, -20;...
>                 1,2,3];
> poissonPedestrians = parameters.user.PredefinedPositions();
> poissonPedestrians.positions                  = posPed;
> % poissonPedestrians.nElements            = 4; % number of users placed
> poissonPedestrians.nRX                  = 1;
> poissonPedestrians.speed                = 0; % static user
> poissonPedestrians.userMovement.type    = parameters.setting.UserMovementType.ConstPosition;
> poissonPedestrians.schedulingWeight     = 10; % assign 10 resource blocks when scheduled
> poissonPedestrians.indoorDecision       = parameters.indoorDecision.Random(0.5);
> poissonPedestrians.losDecision          = parameters.losDecision.UrbanMacro5G;
> poissonPedestrians.channelModel         = parameters.setting.ChannelModel.PedA;
> params.userParameters('poissonUserPedestrian') = poissonPedestrians;
> 
> % car user distributed through a Poisson point process
>  posVeh    =  [-100, 20,0;...
>                 -100, 50,0;...
>                 1, 2, 3];
> poissonCars = parameters.user.PredefinedPositions();
> poissonCars.positions                  = posVeh;
> %  poissonCars                     = parameters.user.Poisson2D();
> %  poissonCars.nElements           = 4;
> poissonCars.nRX                 = 1;
> poissonCars.speed               = 50;
> poissonCars.userMovement.type   = parameters.setting.UserMovementType.RandConstDirection;
> poissonCars.schedulingWeight    = 20; % assign 20 resource blocks when scheduled
> poissonCars.indoorDecision      = parameters.indoorDecision.Static(parameters.setting.Indoor.outdoor);
> poissonCars.losDecision         = parameters.losDecision.UrbanMacro5G;
> poissonCars.channelModel        = parameters.setting.ChannelModel.VehB;
> params.userParameters('poissonUserCar') = poissonCars;
> 
> end

Thank you in advance for your help.

Best,
Džana