<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Albu</id>
	<title>Nsnam - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Albu"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/Albu"/>
	<updated>2026-04-07T12:45:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13361</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13361"/>
		<updated>2024-10-18T11:33:58Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;br /&gt;
&lt;br /&gt;
== Week 15 [Sep 2 - Sep 8] ==&lt;br /&gt;
* Show resolved threads in a presentation [https://docs.google.com/presentation/d/159e9AD1G9IB-npqqiV9844bY0DHjulbptzlOFai-oMk/edit?usp=sharing]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=169341bc9465d0d801eb5bc761ce23d40bc98c55 Fix scenario parameters in 'cttc-nr-channels-example']&lt;br /&gt;
** Fix doxygen and documentation &lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=702430514232c9728e822d1764d15c7e2c9ecf23 Extend NrChannelHelper class to support Distance-based 3GPP]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65ebea365697cc606f35ace66fef50f8edb66487 Configure distance-based 3GPP channel using standard channelHelper method]&lt;br /&gt;
&lt;br /&gt;
* '''Discussion''':&lt;br /&gt;
** The distance-based 3GPP channel model is the 3GPP channel model with a maximum distance attribute. It shouldn't be in the NrChannelHelper scope&lt;br /&gt;
** All threads are already addressed; I can now focus on plotting the results&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start plotting the results as discussed in WP2&lt;br /&gt;
* Create a Distance-based 3GPP spectrum channel model manually in cttc-nr-3gpp-calibration-utils-v2.cc&lt;br /&gt;
&lt;br /&gt;
== Week 16 [Sep 9 - Sep 15] ==&lt;br /&gt;
* Plot results [https://docs.google.com/presentation/d/1kZrTYnL7pzd_cM9dEd7zOxT5TIFTvwXt4DfOrMWOG6c/edit?usp=sharing]&lt;br /&gt;
** Plot SINR mesh in the range of 30.5 GHz to 60.5 GHz&lt;br /&gt;
** Plot ECDF of the three-channel models&lt;br /&gt;
** Plot time resolution for all channel models in terms of real/user/system time&lt;br /&gt;
** Plot KPIs (throughput, delay, and jitter)&lt;br /&gt;
* Create Distance-Based 3GPP spectrum class manually&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/commit/164902a3717b8719b176f9af5889afe507e38cdf?merge_request_iid=174 cttc-nr-3gpp-calibration-utils-v2: Create DistanceBased spectrum class manually]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Double-check the created dataset and plot scripts&lt;br /&gt;
* Time results:&lt;br /&gt;
** Add time results for 2 and 6 UEs&lt;br /&gt;
** Increase the bandwidth from 5 MHz to 100 MHz&lt;br /&gt;
&lt;br /&gt;
== Week 17 [Sep 16 - Sep 22] ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Week 17 was divided into two parts: &lt;br /&gt;
* 17.1) We discussed the evaluated results [https://docs.google.com/presentation/d/1-mE9b6QE3P6S9kwvFGj2bwuvy6MQWe6QANcwXqFDGqo/edit?usp=sharing]:&lt;br /&gt;
** The SINR ECDF plots of 3GPP and FTR make total sense after changing the positions&lt;br /&gt;
** NYUSIM remains with strange behavior&lt;br /&gt;
** Discussion: HexagonalGridScenario randomly positions the UE and the gNB so that the UE is behind the gNB&lt;br /&gt;
*** Fix: The UE position to be in front of the gNB since we are working with only LOS&lt;br /&gt;
*** Fix: The bearing angle (check cttc-nr-mimo-demo)&lt;br /&gt;
&lt;br /&gt;
* 17.2) We discussed the evaluated results, small issues that may happen during the test code, and NrChannelHelper API's extension to configure legacy models manually [https://docs.google.com/presentation/d/19gSmb4aiG8TnCKcPNp-k8zL_2svV6ENttXVmgNvVj5Q/edit?usp=sharing].&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start the test code&lt;br /&gt;
* Plot time results for 3GPP without fading&lt;br /&gt;
&lt;br /&gt;
== Week 18 [Sep 23 - Sep 29] ==&lt;br /&gt;
&lt;br /&gt;
* Present the updates [https://docs.google.com/presentation/d/1Vtgrgxn2A2dnNxtj9nsTVMADOI-cl9OdcXnot8sUuL4/edit?usp=sharing]&lt;br /&gt;
* Develop the test code [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65fabc490829d123bc9d774ee1f90f8e769d97e9 cmakelists, gsoc-channel-combinations-test: Add test to check channel creation via NrChannelHelper API]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix minor issues in the test code&lt;br /&gt;
* Rebase the MR&lt;br /&gt;
* Add NYUSIM files to 'utils/channels/nyu' path&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5GFinalReport&amp;diff=13348</id>
		<title>GSOC2024Channels5GFinalReport</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5GFinalReport&amp;diff=13348"/>
		<updated>2024-10-15T14:39:58Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Project Overview =&lt;br /&gt;
* '''Project Name:'''  5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, and Gabriel Ferreira&lt;br /&gt;
&lt;br /&gt;
The project aims to integrate the two new channel models, NYUSIM and Fluctuating Two-Ray (FTR), into the NR module in a simplified and user-friendly manner. Additionally, some tasks will be carried out during the implementation process, such as testing the code and creating examples that demonstrate the use of the implemented models.&lt;br /&gt;
&lt;br /&gt;
== Merge Requests and Project Details ==&lt;br /&gt;
&lt;br /&gt;
I maintained two branches to accomplish all the code written during GSoC: [https://gitlab.com/Allbu/nr/-/tree/bwp-interface-enhancement?ref_type=heads bwp-interface-enhancement] and [https://gitlab.com/Allbu/nr/-/tree/enable-non-su-mimo-second-imp?ref_type=heads enable-non-su-mimo].&lt;br /&gt;
&lt;br /&gt;
Project Wiki Page: [https://www.nsnam.org/wiki/GSOC2024Channels5G GSOC2024Channels5G]&lt;br /&gt;
&lt;br /&gt;
Proposal: [https://drive.google.com/file/d/1TSTStwfwm5o1ALHmnphOKejYse69ow-x/view?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Merge Requests&lt;br /&gt;
|-&lt;br /&gt;
! No. || Name || Status&lt;br /&gt;
|-&lt;br /&gt;
| [1] || [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 Draft: GSoC 2024: Refactor band configuration and initialization with a modular approach (Enhancement)] || Draft&lt;br /&gt;
|-&lt;br /&gt;
| [2] || [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 Draft: GSoC2024: Enable non-su-mimo channel models] || Draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
During the bonding period, we discussed all the significant parts of the project before the implementation started. Therefore, I began to:&lt;br /&gt;
&lt;br /&gt;
* Understand how the NYUSIM channel model interface was implemented in the mmWave module&lt;br /&gt;
* Read papers regarding the implementation of both NYUSIM and FTR&lt;br /&gt;
* Plan the user-friendly interface for channel model selection and configuration&lt;br /&gt;
* Discuss some issues that this implementation could generate in the code &lt;br /&gt;
&lt;br /&gt;
== Coding Phase and Work Packages ==&lt;br /&gt;
As proposed for the coding period, we set some goals divided into work packages.&lt;br /&gt;
&lt;br /&gt;
=== Work Package 1 ===&lt;br /&gt;
In the first one, four goals were decided upon:&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 4''': [https://gitlab.com/Allbu/nr/-/commit/be2afa7d275677c79f58c9717987a9400b60eb4d]&lt;br /&gt;
* Prepare 5G-Lena for different channel models that may not have a spectrum channel matrix for SU-MIMO and create a merge request to 5G-Lena. [milestone 1]&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 6''': [https://gitlab.com/cttc-lena/nr/-/merge_requests/167]&lt;br /&gt;
* Implement an interface for selecting the channel model via the NR helper class and create a merge request for 5G-Lena. [milestone 2] &lt;br /&gt;
* Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. [milestone 3] [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=846330277256bfc0bcd4486b1a231eb2cfa9a03f specific commit]&lt;br /&gt;
* Extend the NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. [milestone 4] [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=225263e93b2164f6ef9368ba99b5630e0beebdd4 specific commit]&lt;br /&gt;
&lt;br /&gt;
* '''NOTE:''' After discussing some points, we decided to improve our approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174]&lt;br /&gt;
&lt;br /&gt;
=== Work Package 2 ===&lt;br /&gt;
In the second work package, we aim to evaluate the channel models by creating one example, test code, and plotting some physical metrics and key performance indicators (KPIs):&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 13''': [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=be66c8687c60f6a0feb297824b5645bd88c16044]&lt;br /&gt;
* Identify and implement the appropriate scenario for all channel models&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 17''': [https://docs.google.com/presentation/d/1kZrTYnL7pzd_cM9dEd7zOxT5TIFTvwXt4DfOrMWOG6c/edit?usp=sharing], [https://docs.google.com/presentation/d/1-mE9b6QE3P6S9kwvFGj2bwuvy6MQWe6QANcwXqFDGqo/edit#slide=id.g2e65c1385a2_0_195], [https://docs.google.com/presentation/d/19gSmb4aiG8TnCKcPNp-k8zL_2svV6ENttXVmgNvVj5Q/edit?usp=sharing]&lt;br /&gt;
* Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example&lt;br /&gt;
* Analyze, evaluate, and plot the results of the accomplished example&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 18''': [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65fabc490829d123bc9d774ee1f90f8e769d97e9]&lt;br /&gt;
* Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena&lt;br /&gt;
&lt;br /&gt;
== Addditional Features ==&lt;br /&gt;
In addition to the proposed activities, I created a new API, NrChannelHelper, which allowed me to redesign how users select and configure channels. This API also enabled the extension to use all the legacy fading and propagation models not previously supported in the 5G-Lena module before my work. Additionally, the NrHelper API has been extended to enable the use of legacy antennas, which will be used in conjunction with the fading and propagation models present in ns-3.&lt;br /&gt;
&lt;br /&gt;
== My Experience ==&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgements ===&lt;br /&gt;
I want to thank all my mentors, Biljana Bojovic, Gabriel Ferreira, and Amir Ashtari, for always helping me understand the code architecture and how to work with open source. I would also like to thank Tom Henderson, who, although not one of my mentors, played a crucial role in improving the developed code. Finally, a general thanks to the Google Summer of Code project and the 5G-Lena team.&lt;br /&gt;
&lt;br /&gt;
=== Challenges Faced ===&lt;br /&gt;
&lt;br /&gt;
In the implementation phase, more precisely, I faced challenges in modularizing the code so that the proposed channel models and the legacy models were included. Additionally, understanding the results at the physical and application layer levels for the FTR and NYUSIM models was challenging.&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5GFinalReport&amp;diff=13311</id>
		<title>GSOC2024Channels5GFinalReport</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5GFinalReport&amp;diff=13311"/>
		<updated>2024-10-06T15:26:34Z</updated>

		<summary type="html">&lt;p&gt;Albu: Created page with &amp;quot;= Project Overview = * '''Project Name:'''  5G NR Module Benchmark and Analysis for Distinct Channel Models * '''Student:''' Joao Albuquerque * '''Mentors:''' Biljana Bojovic, Amir Ashtari, and Gabriel Ferreira  The project aims to integrate the two new channel models, NYUSIM and Fluctuating Two-Ray (FTR), into the NR module in a simplified and user-friendly manner. Furthermore, some undertake additional tasks that will be accomplished during the implementation, such as...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Project Overview =&lt;br /&gt;
* '''Project Name:'''  5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, and Gabriel Ferreira&lt;br /&gt;
&lt;br /&gt;
The project aims to integrate the two new channel models, NYUSIM and Fluctuating Two-Ray (FTR), into the NR module in a simplified and user-friendly manner. Furthermore, some undertake additional tasks that will be accomplished during the implementation, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
&lt;br /&gt;
== Merge Requests and Project Details ==&lt;br /&gt;
&lt;br /&gt;
I maintained two branches to accomplish all the code written during GSoC: [https://gitlab.com/Allbu/nr/-/tree/bwp-interface-enhancement?ref_type=heads bwp-interface-enhancement] and [https://gitlab.com/Allbu/nr/-/tree/enable-non-su-mimo-second-imp?ref_type=heads enable-non-su-mimo].&lt;br /&gt;
&lt;br /&gt;
Project Wiki Page: [https://www.nsnam.org/wiki/GSOC2024Channels5G GSOC2024Channels5G]&lt;br /&gt;
&lt;br /&gt;
Proposal: [https://drive.google.com/file/d/1TSTStwfwm5o1ALHmnphOKejYse69ow-x/view?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Merge Requests&lt;br /&gt;
|-&lt;br /&gt;
! No. || Name || Status&lt;br /&gt;
|-&lt;br /&gt;
| [1] || [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 Draft: GSoC 2024: Refactor band configuration and initialization with a modular approach (Enhancement)] || Draft&lt;br /&gt;
|-&lt;br /&gt;
| [2] || [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 Draft: GSoC2024: Enable non-su-mimo channel models] || Draft&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Community Bonding Period ==&lt;br /&gt;
&lt;br /&gt;
During the bonding period, we discussed all the significant parts of the project before the implementation started. Therefore, I began to:&lt;br /&gt;
&lt;br /&gt;
* Understand how the NYUSIM channel model interface was implemented in the mmWave module&lt;br /&gt;
* Read papers regarding the implementation of both NYUSIM and FTR&lt;br /&gt;
* Plan the user-friendly interface for channel model selection and configuration&lt;br /&gt;
* Discuss some issues that this implementation could generate in the code &lt;br /&gt;
&lt;br /&gt;
== Coding Phase and Work Packages ==&lt;br /&gt;
As proposed for the coding period, we set some goals divided into work packages.&lt;br /&gt;
&lt;br /&gt;
=== Work Package 1 ===&lt;br /&gt;
In the first one, four goals were decided upon:&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 4''': [https://gitlab.com/Allbu/nr/-/commit/be2afa7d275677c79f58c9717987a9400b60eb4d]&lt;br /&gt;
* Prepare 5G-Lena for different channel models that may not have a spectrum channel matrix for SU-MIMO and create a merge request to 5G-Lena. [milestone 1]&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 6''': [https://gitlab.com/cttc-lena/nr/-/merge_requests/167]&lt;br /&gt;
* Implement an interface for selecting the channel model via the NR helper class and create a merge request for 5G-Lena. [milestone 2] &lt;br /&gt;
* Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. [milestone 3] [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=846330277256bfc0bcd4486b1a231eb2cfa9a03f specific commit]&lt;br /&gt;
* Extend the NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. [milestone 4] [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=225263e93b2164f6ef9368ba99b5630e0beebdd4 specific commit]&lt;br /&gt;
&lt;br /&gt;
* '''NOTE:''' After discussing some points, we decided to improve our approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174]&lt;br /&gt;
&lt;br /&gt;
=== Work Package 2 ===&lt;br /&gt;
In the second work package, we aim to evaluate the channel models by creating one example, test code, and plotting some physical metrics and key performance indicators (KPIs):&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 13''': [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=be66c8687c60f6a0feb297824b5645bd88c16044]&lt;br /&gt;
* Identify and implement the appropriate scenario for all channel models&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 17''': [https://docs.google.com/presentation/d/1kZrTYnL7pzd_cM9dEd7zOxT5TIFTvwXt4DfOrMWOG6c/edit?usp=sharing], [https://docs.google.com/presentation/d/1-mE9b6QE3P6S9kwvFGj2bwuvy6MQWe6QANcwXqFDGqo/edit#slide=id.g2e65c1385a2_0_195], [https://docs.google.com/presentation/d/19gSmb4aiG8TnCKcPNp-k8zL_2svV6ENttXVmgNvVj5Q/edit?usp=sharing]&lt;br /&gt;
* Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example&lt;br /&gt;
* Analyze, evaluate, and plot the results of the accomplished example&lt;br /&gt;
&lt;br /&gt;
''' Achieved in week 18''': [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65fabc490829d123bc9d774ee1f90f8e769d97e9]&lt;br /&gt;
* Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena&lt;br /&gt;
&lt;br /&gt;
== Addditional Features ==&lt;br /&gt;
In addition to the proposed activities, I created a new API, NrChannelHelper, which allowed me to redesign how channels are selected and configured by users. This API also enabled the extension to use legacy models not previously supported in the 5G-Lena module before my work. For this, the configuration of these legacy channels was allowed, and antennas aligned with these models were used.&lt;br /&gt;
&lt;br /&gt;
== My Experience ==&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgements ===&lt;br /&gt;
I want to thank all my mentors, Biljana Bojovic, Gabriel Ferreira, and Amir Ashtari, for always helping me understand the code architecture and how to work with open source. I would also like to thank Tom Henderson, who, although not one of my mentors, played a crucial role in improving the developed code. Finally, a general thanks to the Google Summer of Code project and the 5G-Lena team.&lt;br /&gt;
&lt;br /&gt;
=== Challenges Faced ===&lt;br /&gt;
&lt;br /&gt;
In the implementation phase, more precisely, I faced challenges in modularizing the code so that the proposed channel models and the legacy models were included. Additionally, understanding the results at the physical and application layer levels for the FTR and NYUSIM models was challenging.&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13309</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13309"/>
		<updated>2024-10-05T00:03:11Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;br /&gt;
&lt;br /&gt;
== Week 15 [Sep 2 - Sep 8] ==&lt;br /&gt;
* Show resolved threads in a presentation [https://docs.google.com/presentation/d/159e9AD1G9IB-npqqiV9844bY0DHjulbptzlOFai-oMk/edit?usp=sharing]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=169341bc9465d0d801eb5bc761ce23d40bc98c55 Fix scenario parameters in 'cttc-nr-channels-example']&lt;br /&gt;
** Fix doxygen and documentation &lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=702430514232c9728e822d1764d15c7e2c9ecf23 Extend NrChannelHelper class to support Distance-based 3GPP]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65ebea365697cc606f35ace66fef50f8edb66487 Configure distance-based 3GPP channel using standard channelHelper method]&lt;br /&gt;
&lt;br /&gt;
* '''Discussion''':&lt;br /&gt;
** The distance-based 3GPP channel model is the 3GPP channel model with a maximum distance attribute. It shouldn't be in the NrChannelHelper scope&lt;br /&gt;
** All threads are already addressed; I can now focus on plotting the results&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start plotting the results as discussed in WP2&lt;br /&gt;
* Create a Distance-based 3GPP spectrum channel model manually in cttc-nr-3gpp-calibration-utils-v2.cc&lt;br /&gt;
&lt;br /&gt;
== Week 16 [Sep 9 - Sep 15] ==&lt;br /&gt;
* Plot results [https://docs.google.com/presentation/d/1kZrTYnL7pzd_cM9dEd7zOxT5TIFTvwXt4DfOrMWOG6c/edit?usp=sharing]&lt;br /&gt;
** Plot SINR mesh in the range of 30.5 GHz to 60.5 GHz&lt;br /&gt;
** Plot ECDF of the three-channel models&lt;br /&gt;
** Plot time resolution for all channel models in terms of real/user/system time&lt;br /&gt;
** Plot KPIs (throughput, delay, and jitter)&lt;br /&gt;
* Create Distance-Based 3GPP spectrum class manually&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/commit/164902a3717b8719b176f9af5889afe507e38cdf?merge_request_iid=174 cttc-nr-3gpp-calibration-utils-v2: Create DistanceBased spectrum class manually]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Double-check the created dataset and plot scripts&lt;br /&gt;
* Time results:&lt;br /&gt;
** Add time results for 2 and 6 UEs&lt;br /&gt;
** Increase the bandwidth from 5 MHz to 100 MHz&lt;br /&gt;
&lt;br /&gt;
== Week 17 [Sep 16 - Sep 22] ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Week 17 was divided into two parts: &lt;br /&gt;
* 17.1) We discussed the evaluated results [https://docs.google.com/presentation/d/1-mE9b6QE3P6S9kwvFGj2bwuvy6MQWe6QANcwXqFDGqo/edit?usp=sharing]:&lt;br /&gt;
** The SINR ECDF plots of 3GPP and FTR make total sense after changing the positions&lt;br /&gt;
** NYUSIM remains with strange behavior&lt;br /&gt;
** Discussion: HexagonalGridScenario randomly positions the UE and the gNB so that the UE is behind the gNB&lt;br /&gt;
*** Fix: The UE position to be in front of the gNB since we are working with only LOS&lt;br /&gt;
*** Fix: The bearing angle (check cttc-nr-mimo-demo)&lt;br /&gt;
&lt;br /&gt;
* 17.2) We discussed the evaluated results, small issues that may happen during the test code, and NrChannelHelper API's extension to configure legacy models manually [https://docs.google.com/presentation/d/19gSmb4aiG8TnCKcPNp-k8zL_2svV6ENttXVmgNvVj5Q/edit?usp=sharing].&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start the test code&lt;br /&gt;
* Plot time results for 3GPP without fading&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Week 18 [Sep 23 - Sep 29] ==&lt;br /&gt;
&lt;br /&gt;
* Present the updates [https://docs.google.com/presentation/d/1Vtgrgxn2A2dnNxtj9nsTVMADOI-cl9OdcXnot8sUuL4/edit?usp=sharing]&lt;br /&gt;
* Develop the test code [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65fabc490829d123bc9d774ee1f90f8e769d97e9 cmakelists, gsoc-channel-combinations-test: Add test to check channel creation via NrChannelHelper API]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix minor issues in the test code&lt;br /&gt;
* Rebase the MR&lt;br /&gt;
* Add NYUSIM files to 'utils/channels/nyu' path&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13299</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13299"/>
		<updated>2024-09-26T11:18:38Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;br /&gt;
&lt;br /&gt;
== Week 15 [Sep 2 - Sep 8] ==&lt;br /&gt;
* Show resolved threads in a presentation [https://docs.google.com/presentation/d/159e9AD1G9IB-npqqiV9844bY0DHjulbptzlOFai-oMk/edit?usp=sharing]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=169341bc9465d0d801eb5bc761ce23d40bc98c55 Fix scenario parameters in 'cttc-nr-channels-example']&lt;br /&gt;
** Fix doxygen and documentation &lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=702430514232c9728e822d1764d15c7e2c9ecf23 Extend NrChannelHelper class to support Distance-based 3GPP]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65ebea365697cc606f35ace66fef50f8edb66487 Configure distance-based 3GPP channel using standard channelHelper method]&lt;br /&gt;
&lt;br /&gt;
* '''Discussion''':&lt;br /&gt;
** The distance-based 3GPP channel model is the 3GPP channel model with a maximum distance attribute. It shouldn't be in the NrChannelHelper scope&lt;br /&gt;
** All threads are already addressed; I can now focus on plotting the results&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start plotting the results as discussed in WP2&lt;br /&gt;
* Create a Distance-based 3GPP spectrum channel model manually in cttc-nr-3gpp-calibration-utils-v2.cc&lt;br /&gt;
&lt;br /&gt;
== Week 16 [Sep 9 - Sep 15] ==&lt;br /&gt;
* Plot results [https://docs.google.com/presentation/d/1kZrTYnL7pzd_cM9dEd7zOxT5TIFTvwXt4DfOrMWOG6c/edit?usp=sharing]&lt;br /&gt;
** Plot SINR mesh in the range of 30.5 GHz to 60.5 GHz&lt;br /&gt;
** Plot ECDF of the three-channel models&lt;br /&gt;
** Plot time resolution for all channel models in terms of real/user/system time&lt;br /&gt;
** Plot KPIs (throughput, delay, and jitter)&lt;br /&gt;
* Create Distance-Based 3GPP spectrum class manually&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/commit/164902a3717b8719b176f9af5889afe507e38cdf?merge_request_iid=174 cttc-nr-3gpp-calibration-utils-v2: Create DistanceBased spectrum class manually]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Double-check the created dataset and plot scripts&lt;br /&gt;
* Time results:&lt;br /&gt;
** Add time results for 2 and 6 UEs&lt;br /&gt;
** Increase the bandwidth from 5 MHz to 100 MHz&lt;br /&gt;
&lt;br /&gt;
== Week 17 [Sep 16 - Sep 22] ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Week 17 was divided into two parts: &lt;br /&gt;
* 17.1) We discussed the evaluated results [https://docs.google.com/presentation/d/1-mE9b6QE3P6S9kwvFGj2bwuvy6MQWe6QANcwXqFDGqo/edit?usp=sharing]:&lt;br /&gt;
** The SINR ECDF plots of 3GPP and FTR make total sense after changing the positions&lt;br /&gt;
** NYUSIM remains with strange behavior&lt;br /&gt;
** Discussion: HexagonalGridScenario randomly positions the UE and the gNB so that the UE is behind the gNB&lt;br /&gt;
*** Fix: The UE position to be in front of the gNB since we are working with only LOS&lt;br /&gt;
*** Fix: The bearing angle (check cttc-nr-mimo-demo)&lt;br /&gt;
&lt;br /&gt;
* 17.2) We discussed the evaluated results, small issues that may happen during the test code, and NrChannelHelper API's extension to configure legacy models manually [https://docs.google.com/presentation/d/19gSmb4aiG8TnCKcPNp-k8zL_2svV6ENttXVmgNvVj5Q/edit?usp=sharing].&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start the test code&lt;br /&gt;
* Plot time results for 3GPP without fading&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13297</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13297"/>
		<updated>2024-09-19T11:27:44Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;br /&gt;
&lt;br /&gt;
== Week 15 [Sep 2 - Sep 8] ==&lt;br /&gt;
* Show resolved threads in a presentation [https://docs.google.com/presentation/d/159e9AD1G9IB-npqqiV9844bY0DHjulbptzlOFai-oMk/edit?usp=sharing]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=169341bc9465d0d801eb5bc761ce23d40bc98c55 Fix scenario parameters in 'cttc-nr-channels-example']&lt;br /&gt;
** Fix doxygen and documentation &lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=702430514232c9728e822d1764d15c7e2c9ecf23 Extend NrChannelHelper class to support Distance-based 3GPP]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65ebea365697cc606f35ace66fef50f8edb66487 Configure distance-based 3GPP channel using standard channelHelper method]&lt;br /&gt;
&lt;br /&gt;
* '''Discussion''':&lt;br /&gt;
** The distance-based 3GPP channel model is the 3GPP channel model with a maximum distance attribute. It shouldn't be in the NrChannelHelper scope&lt;br /&gt;
** All threads are already addressed; I can now focus on plotting the results&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start plotting the results as discussed in WP2&lt;br /&gt;
* Create a Distance-based 3GPP spectrum channel model manually in cttc-nr-3gpp-calibration-utils-v2.cc&lt;br /&gt;
&lt;br /&gt;
== Week 16 [Sep 9 - Sep 15] ==&lt;br /&gt;
* Plot results [https://docs.google.com/presentation/d/1kZrTYnL7pzd_cM9dEd7zOxT5TIFTvwXt4DfOrMWOG6c/edit?usp=sharing]&lt;br /&gt;
** Plot SINR mesh in the range of 30.5 GHz to 60.5 GHz&lt;br /&gt;
** Plot ECDF of the three-channel models&lt;br /&gt;
** Plot time resolution for all channel models in terms of real/user/system time&lt;br /&gt;
** Plot KPIs (throughput, delay, and jitter)&lt;br /&gt;
* Create Distance-Based 3GPP spectrum class manually&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/commit/164902a3717b8719b176f9af5889afe507e38cdf?merge_request_iid=174 cttc-nr-3gpp-calibration-utils-v2: Create DistanceBased spectrum class manually]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Double-check the created dataset and plot scripts&lt;br /&gt;
* Time results:&lt;br /&gt;
** Add time results for 2 and 6 UEs&lt;br /&gt;
** Increase the bandwidth from 5 MHz to 100 MHz&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13292</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13292"/>
		<updated>2024-09-11T19:55:20Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 15 [Aug 2 - Sep 8] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Week 15 [Sep 2 - Sep 8] ==&lt;br /&gt;
* Show resolved threads in a presentation [https://docs.google.com/presentation/d/159e9AD1G9IB-npqqiV9844bY0DHjulbptzlOFai-oMk/edit?usp=sharing]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=169341bc9465d0d801eb5bc761ce23d40bc98c55 Fix scenario parameters in 'cttc-nr-channels-example']&lt;br /&gt;
** Fix doxygen and documentation &lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=702430514232c9728e822d1764d15c7e2c9ecf23 Extend NrChannelHelper class to support Distance-based 3GPP]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65ebea365697cc606f35ace66fef50f8edb66487 Configure distance-based 3GPP channel using standard channelHelper method]&lt;br /&gt;
&lt;br /&gt;
* '''Discussion''':&lt;br /&gt;
** The distance-based 3GPP channel model is the 3GPP channel model with a maximum distance attribute. It shouldn't be in the NrChannelHelper scope&lt;br /&gt;
** All threads are already addressed; I can now focus on plotting the results&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start plotting the results as discussed in WP2&lt;br /&gt;
* Create a Distance-based 3GPP spectrum channel model manually in cttc-nr-3gpp-calibration-utils-v2.cc&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13291</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13291"/>
		<updated>2024-09-11T19:53:03Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Week 15 [Aug 2 - Sep 8] ==&lt;br /&gt;
* Show resolved threads in a presentation [https://docs.google.com/presentation/d/159e9AD1G9IB-npqqiV9844bY0DHjulbptzlOFai-oMk/edit?usp=sharing]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=169341bc9465d0d801eb5bc761ce23d40bc98c55 Fix scenario parameters in 'cttc-nr-channels-example']&lt;br /&gt;
** Fix doxygen and documentation &lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=702430514232c9728e822d1764d15c7e2c9ecf23 Extend NrChannelHelper class to support Distance-based 3GPP]&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=65ebea365697cc606f35ace66fef50f8edb66487 Configure distance-based 3GPP channel using standard channelHelper method]&lt;br /&gt;
&lt;br /&gt;
* '''Discussion''':&lt;br /&gt;
** The distance-based 3GPP channel model is the 3GPP channel model with a maximum distance attribute. It shouldn't be in the NrChannelHelper scope&lt;br /&gt;
** All threads are already addressed; I can now focus on plotting the results&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Start plotting the results as discussed in WP2&lt;br /&gt;
* Create a Distance-based 3GPP spectrum channel model manually in cttc-nr-3gpp-calibration-utils-v2.cc&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13286</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13286"/>
		<updated>2024-09-08T14:33:31Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;br /&gt;
&lt;br /&gt;
== Week 14 [Aug 26 - Sep 1] ==&lt;br /&gt;
* Present some MR improvements and results [https://docs.google.com/presentation/d/178_frl-AkCv8b_N9-3pfVWL7ccYpq09P4vHhorhlHM4/edit?usp=sharing]&lt;br /&gt;
** Start plotting the SINR 3D mesh for all channel models&lt;br /&gt;
** Start plotting KPIs&lt;br /&gt;
** Show achievements/improvements accomplished during the week 12-13&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=62dbeb281ae3c02c6dd6180447c4b236379e780d nr-module: Add abbreviations and improve the text in 'Nr Channel Helper' section]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b58d7588c9da1d799c334da978dc8c0f7328a526 cc-bwp-helper: Fix GetChannel doxy in BWP struct] &lt;br /&gt;
** Reuse the SetChannel function for BWP's spectrum channel configuration&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f196b19123831b7f01e96321f0f5400f3cf1e19 cc-bwp-helper: Make spectrum channel nonpublic in the BWP struct]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=8b62cd542b8f346cce0ab330ae14af287b0380ba nr-channel-helper, nr-helper: Use Set/Get functions to interact with BWPs' spectrum channels]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving the threads&lt;br /&gt;
* Fix scenario parameters in cttc-nr-channels-example&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13274</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13274"/>
		<updated>2024-08-28T17:49:30Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;br /&gt;
&lt;br /&gt;
== Week 13 [Aug 19 - Aug 25] ==&lt;br /&gt;
* Create a dataset that includes all scenarios that fit all channel models [UMi, UMa, and RMa]&lt;br /&gt;
** Work branch: [https://gitlab.com/Allbu/nr/-/tree/traces-results?ref_type=heads trace-results]&lt;br /&gt;
&lt;br /&gt;
* Resolve threads:&lt;br /&gt;
** Fix comments and doxygen: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=716cc2c1c9d2fb1a0eab7a963f1a09a70ab6385f !174 (716cc2c1)], [https://gitlab.com/cttc-lena/nr/-/commit/b00cdf9796cd4a114e7abd11322e20b7d473e989?merge_request_iid=174 !174 (b00cdf97)], and others (check the [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 !MR - 174])&lt;br /&gt;
** Fix UMi base station scenario height and add a reference: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d688ae3a5416440eab29d0c3d3bce11839f2621d !174 (547d578a)]&lt;br /&gt;
** Fix the maximum delay in the CheckForLostPackets FlowMonitor function: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=7bc58a08cb6f84d580d2d6d8eed8bd963853e677 !174 (7bc58a08)] &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Continue solving threads and discussing the approach in the MR&lt;br /&gt;
* Start plotting the measured traces&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13263</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13263"/>
		<updated>2024-08-20T21:23:45Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;br /&gt;
&lt;br /&gt;
== Week 12 [Aug 12 - Aug 18] ==&lt;br /&gt;
* Add the newly created example variation to simulate a 'legacy' channel (Friis) in 'examples-to-run'&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1077ff7ecc3f8a06b82fd54c8cc0793c6f57350d Add variation of cttc-nr-channel-example for non-phased channel usage]&lt;br /&gt;
* Add the description for the new helper and the example in the nr-module.rst&lt;br /&gt;
** Commits: &lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=283d388ccdbc0e6750472568c64b2aeadd9352b9 Extend documentation to include NrChannelHelper API]&lt;br /&gt;
*** [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=c4aec1a140f3020d860835a6630dd9256e9f194a Extend documentation to include cttc-nr-channels-example]&lt;br /&gt;
* Start a new section for the following release in CHANGES.md and add the bullet/s describing the main CHANGES due to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=03bdb5c4ca6fd2330731962610dee694e9812a05 Update changes in the new NR-v3.4 section]&lt;br /&gt;
* Update the RELEASE_NOTES.md and add the bullet/s describing the main release notes related to the created MR&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1bc51c56e03eefa47b5504f476aa5b36963d5f47 Create a new section exposing the modifications and improvements made]&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=6da7492cc643ef0cb6f10f2f9a406509ab872251 Rename ChannelHelper class into NrChannelHelper]&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4556bc548b56d2b6ff1a19bbc8eaae280b39b013 Use HexagonalGridScenarioHelper for scenario creation]&lt;br /&gt;
* Add FlowMonitor to track the statistics&lt;br /&gt;
** Commit: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=08ee30f408e057c6537159503fac18dee7259c90  Extend example to use FlowMonitor]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Define the scenario that fits all the channel models and start measurements&lt;br /&gt;
* Solve threads in MR [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/commits !174]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13256</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13256"/>
		<updated>2024-08-14T11:47:37Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Aug 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;br /&gt;
&lt;br /&gt;
== Week 11 [Aug 05 - Aug 11] ==&lt;br /&gt;
* Present a slide about the MR improvements [https://docs.google.com/presentation/d/1z1cmg9sMpd7mQSW0ESVs5YycYhxtdRVgyAN4yVSLvNA/edit?usp=sharing]&lt;br /&gt;
** Use ObjectFactories for multiple SpectrumChannel creation: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=a5caa22e6c1463f6bb7825952a68416fcd1b74af Update the create SpectrumChannels for ObjectFactory usage]&lt;br /&gt;
** Assign frequency directly in ChannelHelper class: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=d2267c778a39d46263f43e28929014693037c27b Assign frequency directly in AssignChannelsToBands]&lt;br /&gt;
** Create a helper function to override the spectrum TypeId for a specific example (cttc-nr-3gpp-calibration-utils-v2): [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=b8d5c76b0a1e9bdd0547f4da2cd314c40b8c50d9 Create function to override the spectrum TypeId] &lt;br /&gt;
** Extend GetPropagationTypeId function to return the associated channel condition: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=e3e07b031e0b45c2e781e95f9a5f18afcda298d8 Extend function to return the channel condition TypeId]  &lt;br /&gt;
* Fix examples and tests:&lt;br /&gt;
** Examples: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update examples to use the updated channel helper API]&lt;br /&gt;
** Tests: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=4f2b895e267cde64e71f6931958d9aaf0e5979da Update tests to use the updated channel helper API]&lt;br /&gt;
* Create a new example:&lt;br /&gt;
** New example that illustrates how a user can configure 'legacy' propagation models (e.g., Friis) or 'standard' (e.g., 3GPP) using our current approach: [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=fb546dfcbc423b91d66d27c2059a7f626184c13f cttc-nr-channels-example: Add new example]&lt;br /&gt;
'''Note:''' I’ve updated most of the code and made several fixes. Documentation updates will be completed by week 12.&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Add different configurations for the example in examples_to_run.py - one for non-phased case and another for the phased case.&lt;br /&gt;
* nr-module.rst - add the description for the new helper and the example&lt;br /&gt;
* CHANGES.md - start a new section for the following release and add the bullet/s describing the main CHANGES due to this MR&lt;br /&gt;
* RELEASE_NOTES.md - start a new one for the following release and add the bullet/s describing the main release notes related to this MR&lt;br /&gt;
* Consider if non-phased could also be configured through the ChannelHelper factories&lt;br /&gt;
* Rename ChannelHelper into NrChannelHelper&lt;br /&gt;
* Change the topology to use the HexagonalHelper&lt;br /&gt;
* Add FlowMonitor to track the statistics - Preparation for the evaluation&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13248</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13248"/>
		<updated>2024-08-05T18:33:07Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 10 [Jul 29 - Jul 04] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Jul 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Extend the NR documentation (RELEASE_NOTES.md, CHANGES.md, and nr-module.rst) with our current modifications&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13247</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13247"/>
		<updated>2024-08-05T18:30:23Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;br /&gt;
&lt;br /&gt;
== Week 10 [Jul 29 - Jul 04] ==&lt;br /&gt;
* Present a slide about the current approach with everything updated [https://docs.google.com/presentation/d/1t4A-gvspCBPRVhbR1pS0kbdacgd1YK7SB0q6qoTHTvw/edit?usp=sharing]&lt;br /&gt;
* [https://gitlab.com/cttc-lena/nr/-/merge_requests/174 MR- !174:] Refactor band configuration and initialization with a modular approach (Enhancement)&lt;br /&gt;
**Examples: Fit all examples in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=81927d3eebbbfce9125b9ac6c453887092d2993d commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
*** '''[specific change]''' cttc-nr-3gpp-calibration-utils-v2: Manual creation of distance-based 3GPP model&lt;br /&gt;
**Test: Fit all tests in our current approach [https://gitlab.com/cttc-lena/nr/-/merge_requests/174/diffs?commit_id=1171003038dc611f003c1c3bac1cbac9ea2f4203 commit: Use channel helper for spectrum channel configuration]&lt;br /&gt;
** Bug: We checked that all the BWPs share the same ''PhasedArraySpectrum'', ''Propagation'' and ''Channel condition'' pointer. All the BWP features (e.g., frequency, scenario, etc.) override the pre-defined values&lt;br /&gt;
 &lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Fix the discovered bug&lt;br /&gt;
** Separate channel creation from channel configuration&lt;br /&gt;
** Fix examples and tests that use more than one channel&lt;br /&gt;
* Create a documentation in:&lt;br /&gt;
** nr-module.rst&lt;br /&gt;
** CHANGES.md&lt;br /&gt;
** RELEASE_NOTES.md&lt;br /&gt;
* Create a new example that uses a non-standard propagation loss model (e.g., Friis)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13245</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13245"/>
		<updated>2024-07-29T18:05:58Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;br /&gt;
&lt;br /&gt;
== Week 9 [Jul 22 - Jul 28] ==&lt;br /&gt;
* After checking Tom's MR, present three approaches to fit into our current approach [https://docs.google.com/presentation/d/1tYB2CGfiE6kx4-Z0QqflRklU_5tBAXcm4_Tf7drx6lo/edit?usp=sharing]:&lt;br /&gt;
** First approach:&lt;br /&gt;
*** Maintain the current state of the code and just create a simple function to set non-phased spectrum models&lt;br /&gt;
** Second approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/8b09bfb5ed34bbfca632fcb8d38640a6c59f99df Separate spectrum configuration from band information]&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/b6f6379f911fbfc3b99562c4d0af4563ba66352d Use a unique function to set phased and non-phased channels]&lt;br /&gt;
** Third approach:&lt;br /&gt;
*** Commit: [https://gitlab.com/Allbu/nr/-/commit/0a77ae77bf0c3e646712db271064d85cb29e7736 Create a unique structure and raw function that returns a simple BWP]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** We decided to follow the second approach, which is more aligned with the original draft and the suggested improvements&lt;br /&gt;
* Include NYUSIM in the 5G-Lena repository ([https://gitlab.com/Allbu/nr/-/tree/include-nyu?ref_type=heads Branch])&lt;br /&gt;
** A new issue [https://gitlab.com/cttc-lena/nr/-/issues/207 #207] appeared when using the &amp;quot;channels/nyu&amp;quot; path in the 5G-lena repository&lt;br /&gt;
** We decided to include NYUSIM instead of setting build conditions; see the original repository: [https://github.com/hiteshPoddar/NYUSIM_in_ns3.git]&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Create a new MR with the improvements of the second approach&lt;br /&gt;
* Create a new MR with the NYUSIM classes (propagation, condition, and spectrum)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13239</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13239"/>
		<updated>2024-07-23T16:25:46Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;br /&gt;
&lt;br /&gt;
== Week 8 [Jul 15 - Jul 21] ==&lt;br /&gt;
&lt;br /&gt;
* Add an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
** Commit:  [https://gitlab.com/cttc-lena/nr/-/merge_requests/160/diffs?commit_id=c1231a3b2c337a89c2b4ce0d6fe9289c017a7990  Assert single antenna port for conversion compatibility]&lt;br /&gt;
* Present a slide about the BWP interface implementation to fit legacy antenna, spectrum, and propagation models [https://docs.google.com/presentation/d/1XqXvxi3Kex4Z1ZfjKglBKW0NXLTz3wTXXMuVJMtjsk8/edit?usp=sharing]&lt;br /&gt;
** '''Considerations''':&lt;br /&gt;
*** The supported combinations variable is getting bigger. We may need to rethink the usage of this in this approach&lt;br /&gt;
*** Spectrum and propagation can't be the same (e.g., FriisSpectrum + FriisPropagation)&lt;br /&gt;
*** Check Tom's approach in: [https://gitlab.com/cttc-lena/nr/-/merge_requests/173 !MR-173]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Check Tom's MR to get insights on how we can do this&lt;br /&gt;
* Extend the interface to adapt manual installation of BWPs&lt;br /&gt;
* Start to code a draft of it&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13226</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13226"/>
		<updated>2024-07-15T13:11:18Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;br /&gt;
&lt;br /&gt;
== Week 7 [Jul 08 - Jul 14] ==&lt;br /&gt;
&lt;br /&gt;
* Present a slide about the possible extension of 5G-Lena to use non-fading simple pathloss models (e.g., LogDistancePropagationLossModel) [https://docs.google.com/presentation/d/1KwFWR9AEgYm1jqONAE2rG1WFMu2ZOijbtTx7J38rYJc/edit?usp=sharing]&lt;br /&gt;
** Simulation occurs without errors, using simple pathloss models&lt;br /&gt;
** Using (non-phased array) spectrum propagation loss classes (e.g., FriisSpectrumPropagationLossModel), one error related to MIMO communication appears, and we are already dealing with this in the [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160) - First Milestone]&lt;br /&gt;
* Create the MR related to the second milestone:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/167 (MR - !167): Refactor band configuration and initialization with a modular approach]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Extend the tests to use antennas present in ns-3 (e.g., ParabolicAntennaModel, CosineAntennaModel, etc.)&lt;br /&gt;
* Create an assert message to ensure the correct SISO conversion from PSD to spectrum channel matrix&lt;br /&gt;
* Extend the new interface implementation to fit the non-phased array spectrum and propagation loss models&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13224</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13224"/>
		<updated>2024-07-09T16:45:38Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;br /&gt;
&lt;br /&gt;
== Week 6 [Jul 01 - Jul 07] ==&lt;br /&gt;
&lt;br /&gt;
* '''Band configuration with CcBwpCreator and BandwidthPartInfo:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/74f38e2f15a0a6e7eec8a5b1a3da94a0f8f1b409 Convert BandwidthPartInfo from struct to class]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/0e49933f1eb266ef22a6e762654ab661438978d2 Create TypeId to BandwidthPartInfo]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/5ef3e6576954f5e07b12b113bacf4d859c72e809 Set supported spectrum, propagation, and condition models and assert user-selected combination]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/ee1cb4dca3cc50f9b15716ac722d36e20410579a Create Get{propagation,channel, and spectrum}TypeId functions with build conditions and lookUpTables]&lt;br /&gt;
**** In GetChannelConditionTypeId(), the Typeid() default value returns when the channel condition is initialized directly in the propagation model. On the other hand, it returns the LOS, NLOS, or Buildings type ID.&lt;br /&gt;
**** In GetPropagationTypeId(), it returns the type ID based on the user-selected scenario and channel model (e.g., ThreeGpp + RMa -&amp;gt; ThreeGppRmaPropagationLossModel::GetTypeId())&lt;br /&gt;
**** In GetChannelModelTypeId(), it returns the type ID of the user-selected channel model&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Use strings in SimpleOperationBandInfo struct and CreateCc function instead of enums]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/4387df24a9970792104c51812cc75ec4072ff8d3 Create the BandwidthPartInfo with scenario, channel model, and condition to transform it from string to enum class directly]&lt;br /&gt;
&lt;br /&gt;
* '''Band initialization with nr-helper:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Remove the lookup table to typedef functions and use the band info to set the object factories type id]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commits/430fd32a44c868c5af4a4fcd8f8a93257c9b8b11 Configure the created spectrum, propagation, and channel condition objects]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/9e0a0f7df65fb8ee205c9dde1ec88bd72e695415 Fix Create{ue,gnb}Phy() BandwidthPartInfo argument]&lt;br /&gt;
&lt;br /&gt;
* '''Update examples and test files to use the current approach:'''&lt;br /&gt;
** Commits:&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/65006222040da1f9741c0518ce9a4c8c5d0a2800 Update test files]&lt;br /&gt;
*** [https://gitlab.com/Allbu/nr/-/commit/19ad656bf28a5c640bcad553c55036187255a292 Update examples]&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Create a better interface in which the user can set attributes in the spectrum, channel condition, and propagation without using the band ID&lt;br /&gt;
* Extend the API to use different propagation and spectrum models&lt;br /&gt;
* Create a draft MR&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13218</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13218"/>
		<updated>2024-07-03T18:09:33Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 5 [Jun 24 - Jun 30 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/bwp-class-interface-imp?ref_type=heads  bwp-class-interface-imp]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13216</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13216"/>
		<updated>2024-07-03T11:08:55Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 5 [Jun 24 - Jun 30 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation [milestone 2 continuation]:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
*** Use ''BandwidthPartInfo'' as a class and not a struct&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/interface-implementation-new?ref_type=heads  bwp-class-interface-imp]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13215</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13215"/>
		<updated>2024-07-02T14:53:49Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 3 [Jun 09 - Jun 16 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 10 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandNonContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/interface-implementation-new?ref_type=heads  bwp-class-interface-imp]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13214</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13214"/>
		<updated>2024-07-02T14:07:43Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 27 - Jun 02 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 03 - Jun 09 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 09 - Jun 16 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 17 - Jun 23 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;br /&gt;
&lt;br /&gt;
== Week 5 [Jun 24 - Jun 30 ] ==&lt;br /&gt;
&lt;br /&gt;
* Start to draft the new interface implementation:&lt;br /&gt;
** Make ''BandwidthPartInfo'' inherit from Object class&lt;br /&gt;
** Create ''GetTypeId()'' function for ''BandwidthPartInfo'' with enum attributes to get enum values using strings&lt;br /&gt;
** Refactor ''CreateOperationBandNonContiguousCc'' to use the modified ''BandwidthPartInfo'' struct&lt;br /&gt;
** Move Buildings to channel condition enum class and add 3GPP and NYU&lt;br /&gt;
** Move supported combinations to ''BandwidthPartInfo'' struct and add FTR&lt;br /&gt;
** Return the TypeId value instead of TypeId string format in Get{condition, channel and propagation}TypeId() function &lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
* Implement it into the code; work branch: [https://gitlab.com/Allbu/nr/-/tree/interface-implementation-new?ref_type=heads  bwp-class-interface-imp]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13212</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13212"/>
		<updated>2024-07-02T10:58:01Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 4 [Jun 21 - Jun 27 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 21 - Jun 27 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function should call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13211</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13211"/>
		<updated>2024-07-01T20:00:04Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 4 [Jun 21 - Jun 27 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 21 - Jun 27 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the band configuration in the modified ''InitializeOperationBand'' function works [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function used to check if the would call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13210</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13210"/>
		<updated>2024-07-01T19:57:22Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 4 [Jun 21 - Jun 27 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 21 - Jun 27 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + V2V_Highway + LOS, we need to abort the simulation because NYU does not have V2V_Highway scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the current band configuration occurs in ''InitializeOperationBand'' function [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function used to check if the would call another mapping function that maps each enum into corresponding TypeIds&lt;br /&gt;
** Check how attributes of the enum type work in ns-3 and how it can be implemented in our context&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS, and Buildings.&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13209</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13209"/>
		<updated>2024-07-01T19:49:33Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 4 [Jun 21 - Jun 27 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 21 - Jun 27 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + UMi_StreetCanyon + LOS, we need to abort the simulation because NYU does not have UMi_StreetCanyon scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;br /&gt;
* Explain how the current band configuration occurs in ''InitializeOperationBand'' function [https://docs.google.com/presentation/d/1LpcJhFx8JXgumQSIgCLXFBHE1oCs4zSazWedE8kpYAo/edit?usp=sharing]&lt;br /&gt;
** Channel condition enum should have one more value called &amp;quot;Buildings&amp;quot;&lt;br /&gt;
** The mapping function would call another mapping function that maps each enum into corresponding TypeIds.&lt;br /&gt;
** Check how attributes of the enum type work in ns-3. You will see that when you define such an attribute, you define the mapping between the string value and enum value, e.g., &amp;quot;RMa&amp;quot; (string) -&amp;gt; Scenario::RMa (enum) directly&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
&lt;br /&gt;
*'''First task''': Refactor BandwidthPartInfo to allow the user to configure it with three independent strings instead of enums:&lt;br /&gt;
** BandwidthPartInfo needs to be a class&lt;br /&gt;
** Pass these three string arguments directly to attributes of bwp that are of enum type, so at least one conversion is done &amp;quot;automatically&amp;quot;&lt;br /&gt;
** Move ''Buildings'' to the channel condition enum class&lt;br /&gt;
** Add the Two-ray channel model to the supported combinations&lt;br /&gt;
&lt;br /&gt;
*'''Second task''': Translation from enum to TypeId&lt;br /&gt;
**Check if the user-selected combination works (I think it is better to call it here before we make a conversion from enum to TypeIDs, but I can also do this later. I just have to ensure that the user selected a correct combination)&lt;br /&gt;
**Convert from enum to TypeID using the functions I already created (instead of returning a string, return the right TypeId)&lt;br /&gt;
**Improve the ''GetConditionTypeId()'' function and define it to set only the LOS, NLOS and Buildings&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13208</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13208"/>
		<updated>2024-06-28T13:22:09Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;br /&gt;
&lt;br /&gt;
== Week 4 [Jun 21 - Jun 27 ] ==&lt;br /&gt;
&lt;br /&gt;
* The first Draft MR related to milestone one is created, check:&lt;br /&gt;
** [https://gitlab.com/cttc-lena/nr/-/merge_requests/160 MR(!160): Enable non-su-mimo channel models]&lt;br /&gt;
* Update the document with a more detailed approach regarding the milestones&lt;br /&gt;
* Create a different way to get the type IDs in ''InitializeOperationBand'' for object factories type id configuration, using:&lt;br /&gt;
** Strings: Reduce most parts of the code using the correct Type Id in string-format&lt;br /&gt;
*** Commits: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c cc-bwp-helper - Create ''GetTypeId'' functions for Condition, Channel and Scenario], [https://gitlab.com/Allbu/nr/-/commit/6aec9923648723b7bd6890cc6ea873a886fed36c nr-helper - Use band information to set the type ids] &lt;br /&gt;
* Create a new enum for channel conditions and replace the enum for the '''enum class'''&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/2fbbdbe3cbde2cf53fd2a9a4817bac1d00e9777c Change enum for enum class]&lt;br /&gt;
* Aggregate the matrix-based channel, in case it has one:&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commit/81a05b952dd3f50e9817842dc9fae52ed40d2629 Aggregate the matrix-based channel in the spectrum]&lt;br /&gt;
* Assert the user's correct combination to avoid errors or wrong usage of propagation, condition, and spectrum (i.e., if the user selects NYU + UMi_StreetCanyon + LOS, we need to abort the simulation because NYU does not have UMi_StreetCanyon scenario)&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/commits/771ddd2065d2418fcc2d2d7f128dc54ff6a14559 Add abort_msg for non-supported combinations]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13205</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13205"/>
		<updated>2024-06-24T19:53:22Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 2 [Jun 07 - Jun 13 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper)&lt;br /&gt;
** Branch: [https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13200</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13200"/>
		<updated>2024-06-21T19:56:46Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* To be done */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper) [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things were not implemented best. Also, change or remove duplicated code and improve the design&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13199</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13199"/>
		<updated>2024-06-21T19:51:15Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 3 [Jun 14 - Jun 20 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper) [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version&lt;br /&gt;
** Commit: [https://gitlab.com/Allbu/nr/-/compare/master...enable-no-su-mimo?from_project_id=9684684 Add condition to support non-SU-MIMO channel models]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...enable-non-su-mimo-second-imp?from_project_id=9684684 Add a function to create a channel matrix if needed]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper &lt;br /&gt;
** Commits: [https://gitlab.com/Allbu/nr/-/compare/master...interface-implementation?from_project_id=9684684 First interface implementation]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;br /&gt;
** Many functions are used to set the TypeId (e.g., Init3GPPUma) that are all similar and could be removed. Instead, all the initialization would happen inside the main function based on the TypeIds&lt;br /&gt;
** Separate the scenario from the condition when configuring the BWPs&lt;br /&gt;
** Propose: Create independent enums for all channel conditions, scenarios, and channel models using enum classes.&lt;br /&gt;
&lt;br /&gt;
=== To be done ===&lt;br /&gt;
* Check whether the channel model can be aggregated to PhasedArraySpectrumPropagationLossModel, so to obtain it with GetObject, '''Note: ''' see how MobilityModel is aggregated to Node, and obtained, read in ns-3 documentation about object aggregation and usage&lt;br /&gt;
* Explain configuring channel, pathloss, and condition using the band ID&lt;br /&gt;
* Fix examples that break when trying to set parameters to AlwaysLos and Always NLos channel condition models instead of using warns&lt;br /&gt;
* Create initial draft MR/MRs&lt;br /&gt;
* Propose: Change the spectrum or the nr module if some interfaces, methods, or other things are not implemented best. Also, change or remove duplicated code and improve the design&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13194</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13194"/>
		<updated>2024-06-19T13:26:10Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 3 [Jun 14 - Jun 21 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper) [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 20 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version [https://gitlab.com/Allbu/nr/-/tree/enable-no-su-mimo?ref_type=heads see]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it [https://gitlab.com/Allbu/nr/-/tree/enable-non-su-mimo-second-imp?ref_type=heads see]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper [https://gitlab.com/Allbu/nr/-/tree/interface-implementation?ref_type=heads see]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13193</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13193"/>
		<updated>2024-06-19T13:20:04Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 3 [Jun 14 - Jun 21 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper) [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 21 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version [https://gitlab.com/Allbu/nr/-/tree/enable-no-su-mimo?ref_type=heads see]&lt;br /&gt;
* The second approach for implementing the non-su-mimo channel model involves creating a spectrum channel matrix for those without it [https://gitlab.com/Allbu/nr/-/tree/enable-non-su-mimo-second-imp?ref_type=heads see]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper [https://gitlab.com/Allbu/nr/-/tree/interface-implementation?ref_type=heads see]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13192</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13192"/>
		<updated>2024-06-19T13:18:36Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Weekly Report */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper) [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;br /&gt;
&lt;br /&gt;
== Week 3 [Jun 14 - Jun 21 ] ==&lt;br /&gt;
''' NOTE: ''' We are still discussing the non-su-mimo implementation. For a more detailed explanation, go to [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC - Document Plan]&lt;br /&gt;
* The first approach for non-su-mimo channel model implementation, back to the 2.6 version [https://gitlab.com/Allbu/nr/-/tree/enable-no-su-mimo?ref_type=heads see]&lt;br /&gt;
* The second approach for implementing the non-SU-MIMO channel model involves creating a spectrum channel matrix for those without it [https://gitlab.com/Allbu/nr/-/tree/enable-non-su-mimo-second-imp?ref_type=heads see]&lt;br /&gt;
* Start the interface implementation to enable the user to select distinct channel models using bandConf and initialization with nr-helper [https://gitlab.com/Allbu/nr/-/tree/interface-implementation?ref_type=heads see]&lt;br /&gt;
* Explain the NYUSIM channel model and compare it with 3GPP. Also, provide information about the interface implementation [https://docs.google.com/presentation/d/1CI2sj_lnZ7TCp5Iux2spw3ibnm_O5rw-HCh7NeU5JcA/edit?usp=sharing]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13176</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13176"/>
		<updated>2024-06-14T19:15:05Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 2 [Jun 07 - Jun 13 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first interface implementation (nr-helper) [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;br /&gt;
* Present a slide about the mmwave-helper class (modified to support nyu); start to define a plan for the first milestone and solve some doubts [https://docs.google.com/presentation/d/1BGEXbTVMReKGh5ArjglZxAwyePU5ITeq7Y5SyTmq3Os/edit?usp=sharing]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13165</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13165"/>
		<updated>2024-06-10T18:37:11Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Week 2 [Jun 07 - Jun 14 ] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 13 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first implementation [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13164</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13164"/>
		<updated>2024-06-10T17:36:18Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow the configuration of 3GPP NTN channel models and create a merge request for 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
= Weekly Report =&lt;br /&gt;
&lt;br /&gt;
== Week 1 [May 31 - Jun 06 ] ==&lt;br /&gt;
&lt;br /&gt;
* Finish the milestones&lt;br /&gt;
* Start to draft the desired implementation &lt;br /&gt;
* Start to study 5G-Lena and the modified [https://github.com/hiteshPoddar/NYUSIM_in_ns3/blob/main/mmwave/helper/mmwave-helper-nyusim.cc MMwave] helper classes&lt;br /&gt;
&lt;br /&gt;
== Week 2 [Jun 07 - Jun 14 ] ==&lt;br /&gt;
* Present a slide about BWP configuration and initialization [https://docs.google.com/presentation/d/18QROGyoguLpFE6mddkoVWXTJrMZ_S3GZCTb8GHphjp8/edit?usp=sharing]&lt;br /&gt;
* Create the first implementation [[https://gitlab.com/Allbu/nr/-/tree/scratch?ref_type=heads scratch]]&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13154</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13154"/>
		<updated>2024-06-02T21:28:22Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, and creating an example that utilizes all the added channel models within ns-3. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13149</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13149"/>
		<updated>2024-05-31T14:15:19Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 2 - Design and implement the benchmark scenario (10 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena; Write what was done in a blog post. '''[milestone 5]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13148</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13148"/>
		<updated>2024-05-31T14:02:24Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 2 - Design and implement the benchmark scenario (10.5 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Extend the example to be used as a test and create a merge request of the implemented test to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' Create a merge request of the implemented example to 5G-Lena; Write what was done in a blog post. '''[milestone 6]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13147</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13147"/>
		<updated>2024-05-31T13:46:56Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 1 - NR interface for channel model usage (10 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]''' &lt;br /&gt;
* '''Task 5: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (3 weeks) '''[milestone 2]'''&lt;br /&gt;
** Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 3]'''&lt;br /&gt;
** Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13146</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13146"/>
		<updated>2024-05-31T13:39:55Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 1 - NR interface for channel model usage (10.5 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (0.5 week) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13145</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13145"/>
		<updated>2024-05-31T13:35:05Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 1 - NR interface for channel model usage (10.5 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (1 week) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13144</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13144"/>
		<updated>2024-05-31T13:34:39Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 1 - NR interface for channel model usage (10.5 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (1 week) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' '''[Optional]''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13143</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13143"/>
		<updated>2024-05-31T13:32:42Z</updated>

		<summary type="html">&lt;p&gt;Albu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (1 week) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' '''[Optional]''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks)&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13142</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13142"/>
		<updated>2024-05-31T13:32:21Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 2 - Design and implement the benchmark scenario (8.5 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (1 week) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' '''[Optional]''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (3 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks)&lt;br /&gt;
&lt;br /&gt;
=== WP 3 - Improvements (''4 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Extend the two-ray model to support su-MIMO and create a merge request to ns-3. '''[milestone 8]''' (2 weeks)&lt;br /&gt;
* '''Task 2: ''' Evaluate and benchmark 3GPP versus two-ray MIMO performance. (2 weeks).&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13141</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13141"/>
		<updated>2024-05-31T13:31:50Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 1 - NR interface for channel model usage (8.5 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''10.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (4 weeks) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (1 week) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' '''[Optional]''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (1 week)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks) &lt;br /&gt;
&lt;br /&gt;
=== WP 3 - Improvements (''4 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Extend the two-ray model to support su-MIMO and create a merge request to ns-3. '''[milestone 8]''' (2 weeks)&lt;br /&gt;
* '''Task 2: ''' Evaluate and benchmark 3GPP versus two-ray MIMO performance. (2 weeks).&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13133</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13133"/>
		<updated>2024-05-24T14:39:05Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''8.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
*  '''Task 1: ''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (0.5 week)&lt;br /&gt;
* '''Task 2: ''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (0.5 week)&lt;br /&gt;
* '''Task 3: ''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models. (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena. (2 weeks) '''[milestone 1]'''&lt;br /&gt;
* '''Task 5: ''' Prepare 5G-Lena for different channel models that may not have spectrum channel matrix for su-MIMO and create a merge request to 5G-Lena. (2 weeks) '''[milestone 2]'''&lt;br /&gt;
* '''Task 6: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. (1 week) '''[milestone 3]'''&lt;br /&gt;
* '''Task 7: ''' '''[Optional]''' Extend NR helper to allow configuration of 3GPP NTN channel models and create a merge request to 5G-Lena. (0.5 weeks) '''[milestone 4]''' &lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''8.5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models. (1 week)&lt;br /&gt;
* '''Task 2: ''' Prepare traces to be measured (e.g., entire simulation time, SINR, throughput, latency, etc.) and scripts for running and plotting based on the implemented example. (2 weeks) &lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example. (1 week)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena. '''[milestone 5]''' (2 weeks)&lt;br /&gt;
* '''Task 5: ''' '''[Optional]''' Create a conditional build depending on the NYU channel model available in ns-3 and create a merge request to 5G-Lena. '''[milestone 6]''' (0.5 week)&lt;br /&gt;
* '''Task 6: ''' Implement a new test code for configuring different channel models and create a merge request of the implemented test to 5G-Lena. '''[milestone 7]''' (2 weeks) &lt;br /&gt;
&lt;br /&gt;
=== WP 3 - Improvements (''4 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Extend the two-ray model to support su-MIMO and create a merge request to ns-3. '''[milestone 8]''' (2 weeks)&lt;br /&gt;
* '''Task 2: ''' Evaluate and benchmark 3GPP versus two-ray MIMO performance. (2 weeks).&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13130</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13130"/>
		<updated>2024-05-17T23:04:27Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 2 - Design and implement the benchmark scenario (5 ~ 6 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1:''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (''0.5 week'') &lt;br /&gt;
* '''Task 2:''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (''0.5 week'') &lt;br /&gt;
* '''Task 3:''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models (''2 weeks'')&lt;br /&gt;
* '''Task 4:''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena  (''2 weeks'') '''[milestone 1]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''5 ~ 6 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models (1 week)&lt;br /&gt;
* '''Task 2: ''' Get results (e.g., channel generation time, entire simulation time, etc.) based on the implemented example (1 ~ 2 weeks)&lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example (1 week)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena (2 weeks) '''[milestone 2]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 3 - Test code and improvements (''7 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Implement a new test code for all the implemented channel models (1 week)&lt;br /&gt;
* '''Task 2: ''' Create a merge request of the implemented test to 5G-Lena (2 weeks)  '''[milestone 3]'''&lt;br /&gt;
* '''Task 3: ''' Improve the channel generation performance in terms of time and computational resources (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request for the new enhancement in channel model generation implementation for 5G-Lena (2 weeks)  '''[milestone 4]'''&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13129</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13129"/>
		<updated>2024-05-17T23:04:11Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 2 - Design and implement the benchmark scenario (5 ~ 6 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1:''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (''0.5 week'') &lt;br /&gt;
* '''Task 2:''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (''0.5 week'') &lt;br /&gt;
* '''Task 3:''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models (''2 weeks'')&lt;br /&gt;
* '''Task 4:''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena  (''2 weeks'') '''[milestone 1]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''5 ~ 6 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models (1 week)&lt;br /&gt;
* '''Task 2: ''' Get results (e.g., channel generation time, entire simulation time, etc.) based on the implemented example (1 ~ 2 weeks)&lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the accomplished example (1 week)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena (2 weeks) ['''milestone 2''']&lt;br /&gt;
&lt;br /&gt;
=== WP 3 - Test code and improvements (''7 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Implement a new test code for all the implemented channel models (1 week)&lt;br /&gt;
* '''Task 2: ''' Create a merge request of the implemented test to 5G-Lena (2 weeks)  '''[milestone 3]'''&lt;br /&gt;
* '''Task 3: ''' Improve the channel generation performance in terms of time and computational resources (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request for the new enhancement in channel model generation implementation for 5G-Lena (2 weeks)  '''[milestone 4]'''&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13128</id>
		<title>GSOC2024Channels5G</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2024Channels5G&amp;diff=13128"/>
		<updated>2024-05-17T23:00:24Z</updated>

		<summary type="html">&lt;p&gt;Albu: /* WP 3 - Test code and improvements (7 weeks) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Back to [[Summer_Projects#Google_Summer_of_Code_2024 | GSoC 2024 projects]]&lt;br /&gt;
&lt;br /&gt;
= Project Overview =&lt;br /&gt;
&lt;br /&gt;
* '''Project Name:''' 5G NR Module Benchmark and Analysis for Distinct Channel Models&lt;br /&gt;
* '''Student:''' Joao Albuquerque&lt;br /&gt;
* '''Mentors:''' Biljana Bojovic, Amir Ashtari, Gabriel Ferreira&lt;br /&gt;
* '''Google page:''' [https://summerofcode.withgoogle.com/programs/2024/projects/OdtVEGnj GSoC - Project]&lt;br /&gt;
* '''Project Goals:''' Currently, ns-3 and the NR module provide an interface for using a channel model (3GPP). However, two other models have also been developed using the ns-3 environment: Two-ray and NYUSim. The project aims to integrate these two new models into NR module in a simplified and user-friendly manner. Furthermore, I will undertake additional tasks, such as testing the implemented code and creating an example that utilizes these implemented models.&lt;br /&gt;
* '''Repository:''' [https://gitlab.com/gsoc2024/ns-3-dev ns-3], [https://gitlab.com/gsoc2024/nr NR]&lt;br /&gt;
* '''About Me:''' I am an undergraduate student working at LASSE-UFPA, a telecommunications research laboratory, where I have been engaged in various projects using the ns-3 and nr. I have over a year and four months of experience working with ns-3 and the nr module, during which I developed applications, including a new ray-tracing module compatible with NR and the latest versions of ns-3. With this opportunity, I aim to make significant and definitive contributions to ns-3 and the NR module.&lt;br /&gt;
&lt;br /&gt;
= Milestones =&lt;br /&gt;
You can track the project's plan by referring to this document: [https://docs.google.com/document/d/14K0tnTJRO1qb2mDguGr4FrFCDMu8VBJ6BZpPow2au2M/edit GSoC — Document Plan]. The document will be constantly updated until the final submission.&lt;br /&gt;
&lt;br /&gt;
Milestones for this project include updating the existing channel models in the ns-3, implementing a user-friendly interface via the nr module, creating an example that utilizes all the added channel models within ns-3, and developing a test code to validate the new models' implementation and related factors. The outline of these implementations will be separated into work packages (WPs) as follows: &lt;br /&gt;
&lt;br /&gt;
=== WP 1 - NR interface for channel model usage (''5 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1:''' Get familiar with BWP configuration, focusing on the channel model and how this configuration could be used from the NR helper class to initialize the BWPs. (''0.5 week'') &lt;br /&gt;
* '''Task 2:''' Get familiar with how the NYU channel model is being configured for the mmWave module in the NYU custom mmWave helper class. (''0.5 week'') &lt;br /&gt;
* '''Task 3:''' Prepare a refactoring plan for NR classes and check if the design will work for the three-channel models (''2 weeks'')&lt;br /&gt;
* '''Task 4:''' Interface implementation for selecting the channel model via the NR helper class and creating a merge request for 5G-Lena  (''2 weeks'') '''[milestone 1]'''&lt;br /&gt;
&lt;br /&gt;
=== WP 2 - Design and implement the benchmark scenario (''5 ~ 6 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Identify and implement the appropriate scenario for all channel models (1 week)&lt;br /&gt;
* '''Task 2: ''' Get results (e.g., channel generation time, entire simulation time, etc.) based on the implemented example (1 ~ 2 weeks)&lt;br /&gt;
* '''Task 3: ''' Analyze, evaluate, and plot the results of the scenario example (1 week)&lt;br /&gt;
* '''Task 4: ''' Create a merge request of the implemented example to 5G-Lena (2 weeks) ['''milestone 2''']&lt;br /&gt;
&lt;br /&gt;
=== WP 3 - Test code and improvements (''7 weeks'') ===&lt;br /&gt;
&lt;br /&gt;
* '''Task 1: ''' Implement a new test code for all the implemented channel models (1 week)&lt;br /&gt;
* '''Task 2: ''' Create a merge request of the implemented test to 5G-Lena (2 weeks)  '''[milestone 3]'''&lt;br /&gt;
* '''Task 3: ''' Improve the channel generation performance in terms of time and computational resources (2 weeks)&lt;br /&gt;
* '''Task 4: ''' Create a merge request for the new enhancement in channel model generation implementation for 5G-Lena (2 weeks)  '''[milestone 4]'''&lt;/div&gt;</summary>
		<author><name>Albu</name></author>
	</entry>
</feed>