https://github.com/beyondexabit/semi-analytical-coupling-solutions

https://github.com/beyondexabit/semi-analytical-coupling-solutions

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.1%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Basic Info
  • Host: GitHub
  • Owner: beyondexabit
  • Language: C++
  • Default Branch: main
  • Size: 67.6 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 1
  • Open Issues: 0
  • Releases: 0
Created over 3 years ago · Last pushed over 3 years ago
Metadata Files
Readme

README.md

semi-analytical-coupling-solutions

Ferreira, Filipe et al. (2017) Semi-Analytical Modelling of Linear Mode Coupling in Few-Mode Fibers. [Dataset] Available from: https://doi.org/10.17036/researchdata.aston.ac.uk.00000206

Summary

A MEX (Matlab executable) file is a function, created in MATLAB, that calls a C/C++ program or a Fortran subroutine. MEX files are used here to speed up the computation. A MEX function behaves just like a MATLAB script or function. However, their compilation is OS dependent. The extensions are also different among the different OS.

For this project, the dynamically linked library MPFR++ is exploited, which is a C++ library for multiple-precision floating-point computations with correct rounding. MPFR++ is built on top of MPFR, which is the original C library for multiple-precision floating-point computations with correct rounding, but which has unfriendly assembly-like function calls even for summation. MPFR C++ subtitutes them with more compact and intuitive expressions.

GMP is another math library, on top of which MPFR has been designed.

Dependencies

For this project, the package libgmp, libgmp-dev, libmpfr, libmpfr-dev and mpfrc++-dev are necessary. The first three might be autmatically installed in a Linux system, thus only the last two should need to be added. The dev packages provide additional files needed for compilation and linking.

The code was tested with Kubuntu 22.04, Matlab R2022b, libgmp 6.2.1, libgmp-dev 6.2.1, libmpfr6 4.1.0, libmpfr-dev 4.1.0, mpfrc++-dev 3.6.9. The installation might require also the package m4.

Changelog

  • Removed the option -lmpfr from the compilation instructions since not necessary.
  • Corrected the typo Gsolve to GSolve in some compiling commands.
  • Changed the declaration of polyrootscrbondcpp to polyrootsalternativecpp in polyrootsalternativecpp.cpp, because otherwise the function call polyrootsalternativecpp (in equations6x6doubleIOrandcpp) would throw an error.
  • Removed the headers gmp.h, mpreal.h, mpfr.h. They are already in the search path for the compiler, if the dependencies mentioned above are met. Removed mpir.h, which, at least for Linux and for the present application, is not necessary. No shared libraries need to be included since, again, they are installed in the search path for both the linker (ld) and the loader (ld.so), if the dependencies are met (see above). There's no need to set the env variable LDLIBRARYPATH, conversely to what it seems indicated in the Matlab help (https://www.mathworks.com/help/matlab/matlab_external/building-on-unix-operating-systems.html#f28833).
  • Corrected the scripts in 0differentialequations_solver since Matlab symbolic computation function has changed syntax.

Owner

  • Name: Beyond Exabit Optical Communications
  • Login: beyondexabit
  • Kind: organization

Exploring massive spatial parallelism in optical fibres to expand the Internet. This work is being supported by the UKRI Future Leaders Fellowship MR/T041218/1.

GitHub Events

Total
Last Year