# 14.2.3 Packages

SEAMCAT has different modules. These are used to group certain classes of the code and handle dependencies between them. This is similar to the layers of abstraction where the engine only knows general system types but not specifics. Modules can be used to enforce such dependencies.

There are two main modules: model and application.

- Model holds all the abstract definitions that composes a System – Transmitter, Receiver, Antenna, Propagation model, Distribution, etc.;
- Application implements the SEAMCAT UI, simulations, Propagation Models, and basically ties everything together. We will descuss this structure in more detail later.

![image.png](https://wiki.cept.org/uploads/images/gallery/2026-07/scaled-1680-/5xeP1zfgNud7EL8k-image.png)

<div class="rich-media-item mediaSingleView-content-wrap image-align-start css-1fn0s1p" data-layout="align-start" data-media-vc-wrapper="true" data-node-type="mediaSingle" data-renderer-start-pos="649" data-vc="media-single" data-width="511" data-width-type="pixel" id="bkmrk-figure-304%3A-modules-"><div class="css-1ss200j"><div data-alt="" data-collection="contentId-493520" data-context-id="493520" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="423" data-id="26876eec-b09e-4e61-8a85-c70d349b545d" data-node-type="media" data-renderer-start-pos="650" data-type="file" data-width="866"><div class="_2rko18qm _vchhusvi _kqswh2mm _ect4ttxp _p12f1osq _c71l1osq _1bsb1qmm _4t3ine4n _1hlmd0i9 _1rquusvi _eg541i5c _mts3kb7n _1ntskb7n _yfmhtlke _5sb1v00u new-file-experience-wrapper" data-media-vc-wrapper="true" data-testid="media-card-view" id="bkmrk-figure-304%3A-modules--1" role="none"><div class="_1reo15vq _18m915vq _2rko18qm _1e0c1txw _kqswh2mm _p12f1osq _1bsb1osq _4t3i1osq _c71l1osq media-file-card-view" data-cursor="pointer" data-test-media-name="4.png" data-test-progress="1" data-test-source="remote" data-test-status="complete" data-testid="media-file-card-view"><div class="_kqswstnw _1bsb1osq _4t3i1osq _1e0c1txw _2lx21bp4 _1bah1h6o _4cvr1h6o align-center" data-testid="ImageRendererWrapper">![](blob:https://ecowiki.atlassian.net/463ce219-292b-4c47-a3b7-6efceda8df78#media-blob-url=true&id=26876eec-b09e-4e61-8a85-c70d349b545d&collection=contentId-493520&contextId=493520&width=866&height=423&alt=&clientId=113268fe-fe5b-4bc3-8ff3-07965dbf1d18)**Figure 304: Modules of SEAMCAT**</div></div></div></div></div></div>Inside a module we organise the software files in packages. It is similar to a folder and like a folder it contains the individual source code files. The names of the packages is helpful when nagivating the source code.

The packages of the model module:

- The names can be helpful when navigating the source code;
- Cellular and generic contains the definitions for the cellular and generic systems;
- Plugin holds the plugin definition for the mentioned types (Eventprocessing, Coverageradius, propagation etc…);
- Distribution, functions, and mathematics holds the distributions and other helper functions;
- Simulation and types holds the simulation results and general type definitions (Antenna, Receiver, RadioSystem, etc).

The packages of Application is more messy than the model. So here it is harder to know exactly where to go. The packages to know here is: scenario and simulation:

- Scenario contains the implementation of some of the types defined in Model;
- Similarly with simulation: here are the specific simulations e.g. CDMADownlinkVictimSimulation.

It is the very nature of code to change, but with a good design and understanding of the abstractions it should be easy to identify part that will change the least. Most of the dynamic parts of the code can be examined with runtime inspection by software development tools. Mechanism vs Policy is a software principle based on the fact that mechanism change infrequently whereas policies change all the time.

Mechanism is here the engine of SEAMCAT and policies are the plugins. The parts that changes behaviour are left open for developers.

<div class="pm-table-container with-shadow-observer" data-layout="align-start" data-testid="table-container" id="bkmrk-%C2%A0-figure-305%3A-packag"><div class="pm-table-sticky-scrollbar-sentinel-top" data-testid="sticky-scrollbar-sentinel-top">  
</div><div class="pm-table-wrapper" data-autosize="false" data-layout="align-start" data-number-column="false" data-table-local-id="" data-vc="table-node-wrapper"><div class="sentinel-left">  
</div><table data-initial-width-mode="content" data-layout="align-start" data-number-column="false" data-table-width="760" data-testid="renderer-table"><colgroup></colgroup><tbody><tr><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1"><div class="ak-renderer-tableHeader-sortable-column"><div class="rich-media-item mediaSingleView-content-wrap image-align-start css-13zv8q4" data-layout="align-start" data-media-vc-wrapper="true" data-node-type="mediaSingle" data-renderer-start-pos="2318" data-vc="media-single" data-width="160" data-width-type="pixel"><div class="css-19ry2e3"><div class="css-vhfmu2" contenteditable="false" data-media-badges="true" data-testid="media-badges">  
</div><div data-alt="" data-collection="contentId-493520" data-context-id="493520" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="426" data-id="d0c9f0e7-cb3c-4a56-b783-cc3ecbdc3d32" data-node-type="media" data-renderer-start-pos="2319" data-type="file" data-width="274"><div class="_2rko18qm _vchhusvi _kqswh2mm _ect4ttxp _p12f1osq _c71l1osq _1bsb1qmm _4t3ine4n _1hlmd0i9 _1rquusvi _eg541i5c _mts3kb7n _1ntskb7n _yfmhtlke _5sb1v00u new-file-experience-wrapper" data-media-vc-wrapper="true" data-testid="media-card-view" role="none"><div class="_1reo15vq _18m915vq _2rko18qm _1e0c1txw _kqswh2mm _p12f1osq _1bsb1osq _4t3i1osq _c71l1osq media-file-card-view" data-cursor="pointer" data-test-media-name="5.png" data-test-progress="1" data-test-source="remote" data-test-status="complete" data-testid="media-file-card-view"><div class="_kqswstnw _1bsb1osq _4t3i1osq _1e0c1txw _2lx21bp4 _1bah1h6o _4cvr1h6o" data-testid="ImageRendererWrapper">![](blob:https://ecowiki.atlassian.net/34681d30-88a0-4fce-bb6b-8a6ac7920250#media-blob-url=true&id=d0c9f0e7-cb3c-4a56-b783-cc3ecbdc3d32&collection=contentId-493520&contextId=493520&width=274&height=426&alt=&clientId=113268fe-fe5b-4bc3-8ff3-07965dbf1d18)</div></div></div></div></div></div></div>![image.png](https://wiki.cept.org/uploads/images/gallery/2026-07/scaled-1680-/4vn3Y6BhyhTKK8Z5-image.png)

<div class="ak-renderer-tableHeader-sortable-column"><div class="rich-media-item mediaSingleView-content-wrap image-align-start css-13zv8q4" data-layout="align-start" data-media-vc-wrapper="true" data-node-type="mediaSingle" data-renderer-start-pos="2318" data-vc="media-single" data-width="160" data-width-type="pixel"><div class="css-19ry2e3"><div data-alt="" data-collection="contentId-493520" data-context-id="493520" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="426" data-id="d0c9f0e7-cb3c-4a56-b783-cc3ecbdc3d32" data-node-type="media" data-renderer-start-pos="2319" data-type="file" data-width="274"><div class="_2rko18qm _vchhusvi _kqswh2mm _ect4ttxp _p12f1osq _c71l1osq _1bsb1qmm _4t3ine4n _1hlmd0i9 _1rquusvi _eg541i5c _mts3kb7n _1ntskb7n _yfmhtlke _5sb1v00u new-file-experience-wrapper" data-media-vc-wrapper="true" data-testid="media-card-view" id="bkmrk--1" role="none"><div class="_1reo15vq _18m915vq _2rko18qm _1e0c1txw _kqswh2mm _p12f1osq _1bsb1osq _4t3i1osq _c71l1osq media-file-card-view" data-cursor="pointer" data-test-media-name="5.png" data-test-progress="1" data-test-source="remote" data-test-status="complete" data-testid="media-file-card-view"><div class="_kqswstnw _1bsb1osq _4t3i1osq _1e0c1txw _2lx21bp4 _1bah1h6o _4cvr1h6o" data-testid="ImageRendererWrapper">  
</div></div></div></div></div></div><figure class="ak-renderer-tableHeader-sorting-icon__wrapper ak-renderer-tableHeader-sorting-icon__no-order"><div role="presentation"><div aria-disabled="false" aria-hidden="false" aria-label="No sort applied to the column" class="ak-renderer-tableHeader-sorting-icon css-1kv9nzt" role="button" tabindex="0"><div class="sorting-icon-svg__no_order ak-renderer-tableHeader-sorting-icon-inactive css-1asrlx7">  
</div></div></div></figure></div></th><th aria-sort="none" class="ak-renderer-tableHeader-sortable-column__wrapper" colspan="1" rowspan="1"><div class="ak-renderer-tableHeader-sortable-column"><div class="rich-media-item mediaSingleView-content-wrap image-align-start css-yolhzr" data-layout="align-start" data-media-vc-wrapper="true" data-node-type="mediaSingle" data-renderer-start-pos="2323" data-vc="media-single" data-width="248" data-width-type="pixel"><div class="css-lvj3os"><div class="css-vhfmu2" contenteditable="false" data-media-badges="true" data-testid="media-badges">  
</div><div data-alt="" data-collection="contentId-493520" data-context-id="493520" data-file-mime-type="" data-file-name="file" data-file-size="1" data-height="310" data-id="5f74ca19-7a03-4be5-8c6d-3edaf7e48da2" data-node-type="media" data-renderer-start-pos="2324" data-type="file" data-width="308"><div class="_2rko18qm _vchhusvi _kqswh2mm _ect4ttxp _p12f1osq _c71l1osq _1bsb1qmm _4t3ine4n _1hlmd0i9 _1rquusvi _eg541i5c _mts3kb7n _1ntskb7n _yfmhtlke _5sb1v00u new-file-experience-wrapper" data-media-vc-wrapper="true" data-testid="media-card-view" id="bkmrk--2" role="none"><div class="_1reo15vq _18m915vq _2rko18qm _1e0c1txw _kqswh2mm _p12f1osq _1bsb1osq _4t3i1osq _c71l1osq media-file-card-view" data-cursor="pointer" data-test-media-name="6.png" data-test-progress="1" data-test-source="remote" data-test-status="complete" data-testid="media-file-card-view"><div class="_kqswstnw _1bsb1osq _4t3i1osq _1e0c1txw _2lx21bp4 _1bah1h6o _4cvr1h6o" data-testid="ImageRendererWrapper">![](blob:https://ecowiki.atlassian.net/97490b0e-252c-42d8-96de-a3a5e9566bb8#media-blob-url=true&id=5f74ca19-7a03-4be5-8c6d-3edaf7e48da2&collection=contentId-493520&contextId=493520&width=308&height=310&alt=&clientId=113268fe-fe5b-4bc3-8ff3-07965dbf1d18)</div></div></div></div></div></div><figure class="ak-renderer-tableHeader-sorting-icon__wrapper ak-renderer-tableHeader-sorting-icon__no-order">![image.png](https://wiki.cept.org/uploads/images/gallery/2026-07/scaled-1680-/hLqTkKKT487pY1zM-image.png)

<div role="presentation"><div aria-disabled="false" aria-hidden="false" aria-label="No sort applied to the column" class="ak-renderer-tableHeader-sorting-icon css-1kv9nzt" role="button" tabindex="0"><div class="sorting-icon-svg__no_order ak-renderer-tableHeader-sorting-icon-inactive css-1asrlx7">  
</div></div></div></figure></div></th></tr><tr><td colspan="1" rowspan="1"><div class="fabric-editor-block-mark fabric-editor-alignment align-center" data-align="center">**Figure 305: Packages of Model**</div></td><td colspan="1" rowspan="1"><div class="fabric-editor-block-mark fabric-editor-alignment align-center" data-align="center">**Figure 306: Packages of Application**</div></td></tr></tbody></table>

</div></div>