tulip
Tulip is a per unit length multiconductor transmission line and in-cell parameters solver
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.5%) to scientific vocabulary
Repository
Tulip is a per unit length multiconductor transmission line and in-cell parameters solver
Basic Info
Statistics
- Stars: 2
- Watchers: 2
- Forks: 2
- Open Issues: 3
- Releases: 5
Metadata Files
README.md
Tulip
Tulip (Transmission line unit length conductors and in-cell parameters) is a solver to obtain the per unit length (PUL) $C$ and $L$ matrices which characterize electromagnetic propagation within a multiconductor tranmission line (MTL). Tulip is based on finite element methods to solver an electroestatic problem for each conductor. Some of its features are:
- Calculation of p.u.l $C$ and $L$ matrices.
- Third order isoparametric elements.
- Support for dielectric materials.
- Open boundary conditions.
- Works on closed, open, or semiopen MTL.
- Multilevel domain decomposition.
- Uses a modified MFEM solver engine available here.
- Result visualization with Paraview or VisIt.
- Start from .step CAD files using the step2gmsh workflow.
Compiling
Compilation needs vcpkg with the packages stated in the vcpkg.json manifest.
Additionally needs: - mfem (with the version pointed by the external/mfem-geg submodule)
Compiling in windows (cmake)
Manually (Windows/Linux)
Compile mfem in external/mfem-geg
shell
cmake -S external/mfem-geg -B mfem-build/rls -DCMAKE_INSTALL_PREFIX=<path-to-mfem-install-dir>
cmake --build mfem-build/rls --target install --config Release
Launch cmake in root.
shell
cmake -S . -B pulmtln-build/rls -DMFEM_DIR=<path-to-mfem-install-dir> -DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg/scripts/buildsystems/vcpkg.cmake>
cmake --build pulmtln-build/rls --config Release
Compilation using presets
Configure and build presets are available. To configure
shell
cmake
-DCMAKE_FIND_USE_PACKAGE_REGISTRY=FALSE
--preset "msbuild-vcpkg"
-S <project folder>
-B <build folder>
which requires the following environment variables to be set (using export)
shell
VCPKG_ROOT=<vcpkg root folder>
MFEM_PACKAGE=<mfem folder including cmake config package>
Using CMAKE_FIND_USE_PACKAGE_REGISTRY=FALSE warranties that no previously used package is used for compilation if any of the needed paths is not found (a questionable Windows feature).
Testing
Once compiled, test cases can be launched from the project root folder, with
shell
<build folder>/bin/Release/pulmtln_tests.exe
Most cases will store results in the Results folder.
Please check the codes in test folder for information on the validation cases and their expected tolerances.
Usage example
Call pulmtln from command line as,
shell
pulmtln.exe -i <input file>
The input file must be describe a JSON object which describes the problem. An example for the five_wires case (available here) follows,
json
{
"analysis": {
"order": 3,
"exportParaViewSolution": true,
"exportVisItSolution": true,
"exportFolder": "Results/five_wires/"
},
"model": {
"materials": {
"Conductor_0": {"type": "PEC", "tag": 1 },
"Conductor_1": {"type": "PEC", "tag": 2 },
"Conductor_2": {"type": "PEC", "tag": 3 },
"Conductor_3": {"type": "PEC", "tag": 4 },
"Conductor_4": {"type": "PEC", "tag": 5 },
"Conductor_5": {"type": "PEC", "tag": 6 },
"Dielectric_1": {"type": "Dielectric", "eps_r": 2.0, "tag": 8},
"Dielectric_2": {"type": "Dielectric", "eps_r": 2.0, "tag": 9},
"Dielectric_3": {"type": "Dielectric", "eps_r": 2.0, "tag": 10},
"Dielectric_4": {"type": "Dielectric", "eps_r": 2.0, "tag": 11},
"Dielectric_5": {"type": "Dielectric", "eps_r": 2.0, "tag": 12}
},
"gmshFile": "five_wires.msh"
}
}
This object must contain the following entries:
- An
analysisJSON object specifies options for the solver such as theorderof the FEM basis and other exporting options. - A
modelJSON object which specifies- the mesh through
gmshFile. In this case thefive_wires.mshfile has been generated from a.stepfile using the step2gmsh program. - the
materialsobject which identifies materials and boundaries assigned to each layer. The location in the mesh is done through itstagnumber which corresponds to aphysical modelin the mesh.
- the mesh through
By default, pulmtln will generate a file called matrices.pulmtln.out.json which contains the $C$ and $L$ p.u.l parameters of the MTL. Each row and column corresponds to the N integer in Conductor_N. Conductor_0 is used as reference.
These results have been cross-compared [here][test/DriverTest.cpp] to match with Ansys Maxwell.
Comparison with SACAMOS does not produce satisfactory because of the different underlying analytical assumptions that are made.
If ExportParaviewSolution and/or ExportVisItSolution are defined as true in analysis, pulmtln will also export visualization results for each simulation performed.
This means two results for each conductor different from zero: with and without accounting for dielectrics, used to compute the p.u.l $C$ and $L$ matrices, respectively.
Below there is an example of the electric fields for the five_wires case visualized in Paraview with (above) and without (below) considering dielectrics.

License and copyright
pulmtln is licensed under BSD 3-Clause. Its copyright belongs to the University of Granada.
Acknowledgements
This project is funded by the following grants:
- HECATE - Hybrid ElectriC regional Aircraft distribution TEchnologies. HE-HORIZON-JU-Clean-Aviation-2022-01. European Union.
- ESAMA - Metodos numericos avanzados para el analisis de materiales electricos y magneticos en aplicaciones aerospaciales. PID2022-137495OB-C31. Spain.
Owner
- Name: OpenSEMBA
- Login: OpenSEMBA
- Kind: organization
- Repositories: 3
- Profile: https://github.com/OpenSEMBA
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Angulo
given-names: Luis D.
orcid: https://orcid.org/0000-0002-1690-7892
- family-names: Manterola
given-names: Alejandro M.
orcid: https://orcid.org/0000-0002-2406-8128
- family-names: Gascon
given-names: Alberto
orcid: https://orcid.org/0000-0003-1190-2248
url: "https://github.com/opensemba/tulip"
title: "opensemba/tulip: opensource per unit length multiconductor transmission line and in-cell parameters solver"
date-released: 2023-06-01
GitHub Events
Total
- Issues event: 7
- Watch event: 1
- Issue comment event: 14
- Push event: 11
- Pull request review comment event: 4
- Pull request event: 10
- Pull request review event: 3
- Fork event: 2
- Create event: 1
Last Year
- Issues event: 7
- Watch event: 1
- Issue comment event: 14
- Push event: 11
- Pull request review comment event: 4
- Pull request event: 10
- Pull request review event: 3
- Fork event: 2
- Create event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 6
- Total pull requests: 7
- Average time to close issues: 18 days
- Average time to close pull requests: 5 days
- Total issue authors: 2
- Total pull request authors: 1
- Average comments per issue: 3.67
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 6
- Pull requests: 7
- Average time to close issues: 18 days
- Average time to close pull requests: 5 days
- Issue authors: 2
- Pull request authors: 1
- Average comments per issue: 3.67
- Average comments per pull request: 0.0
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- lmdiazangulo (3)
- AdtPereira (3)
Pull Request Authors
- lmdiazangulo (7)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- actions/cache v3 composite
- actions/checkout v3 composite
- lukka/get-cmake latest composite
- lukka/run-vcpkg v11 composite
- mfem/github-actions/build-mfem v2.4 composite
- styfle/cancel-workflow-action 0.11.0 composite
- gtest *
- nlohmann-json *