Lemma is an Electromagnetics API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

compiling.dox 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. namespace Lemma{
  2. /**
  3. \page Compiling
  4. <div class="lemmamainmenu">
  5. \ref Intro "Intro"
  6. | \b Compiling
  7. | \ref Memory "Memory management"
  8. | \ref Minimal "Minimal programme"
  9. | \ref EmSources "EM Sources"
  10. </div>
  11. Compiling Lemma is fairly straightforward. The biggest hurdle is possibly installing
  12. the prerequisites, but on many platforms this is easy.
  13. \section Table Table of contents
  14. - \ref Prerequisites
  15. - \ref OptionalPrerequisites
  16. - \ref Downloading
  17. - \ref Configuring
  18. - \ref Building
  19. \section OptionalPrerequisites Optional Prerequisites
  20. - VTK - The Visualization ToolKit is a powerful data visualization framework. This is
  21. an optional dependency, but some functionality will be missing without it. Any
  22. version after 6.0 is fine. VTK is available under a BSD license from <http://vtk.org>
  23. Again--on Linux-- most package managers offer VTK. Compiling from source is not
  24. terribly difficult, but requires installing CMake as well.
  25. \note Some Lemma modules may impose additional (optional or mandatory) prerequisites, see the
  26. module documentation.
  27. \section Prerequisites Prerequisites
  28. Lemma uses CMake to manage the build process (https://cmake.org). CMake is free software
  29. that is easy to install on about any operating system.
  30. \subsection Dependencies
  31. Hard dependencies are
  32. The only dependencies are the Eigen linear algebra Library v3, a
  33. C++ compiler and scons.
  34. The following compilers are fully supported and tested: gnu, mingw,
  35. and intelc. Several routines are parallelised for shared memory platforms
  36. using OpenMP. Any of the above compilers is able to be used with OpenMP.
  37. Microsoft's Visual C++ compiler will likely be supported for stable
  38. releases, but is not actively tested.
  39. Eigen extensively uses template
  40. meta programming, the Borland compiler has been shown to be subpar at
  41. optimizing this type of code and will likely never be supported actively.
  42. A new compiler clang, is being developed and may prove to be promising as
  43. well, but current C++ support is lacking. If you are using a different
  44. compiler, please share your experiences with us.
  45. The Visualization ToolKit (VTK) is used for visualisation throughout Lemma.
  46. It is not an explicit dependency, but without it, you will not be able to
  47. get any graphical output.
  48. Eigen is freely available under the LGPL at
  49. <http://eigen.tuxfamily.org>. The necessary components of Eigen will
  50. be included in stable releases of Lemma.
  51. Scons is a make replacement built on top of Python, and is also free.
  52. - Eigen3 - Eigen is a header-only linear algebra template library. It is made
  53. available under the Gnu Lesser Public License. It is available at
  54. <http://eigen.tuxfamily.org>. Please note that Lemma uses Version 3 of the Library.
  55. \section Downloading Acquiring the source
  56. Lemma is currently available from svn checkout only. Note that while Lemma is still in Beta only
  57. developers have access to the source code. Contact us if you would like to contribute.
  58. \code
  59. svn co https://svn.lemmasoftware.org/lemma/trunk Lemma
  60. \endcode
  61. \section Configuring Configuring
  62. There is very little configuring to do. In the main Lemma directory you will find a file
  63. called 'Examplesettings.py listed below'
  64. \include Examplesettings.py
  65. Configure this to your machine, and copy to a file named
  66. \code
  67. settings.py
  68. \endcode
  69. If you have more questions about a parameter you can type
  70. \code
  71. scons -h
  72. \endcode
  73. For more information. After configuring, copy Examplesettings.py to a file called settings.py.
  74. \section Building
  75. To build the libraries simply type:
  76. \code
  77. scons -j2
  78. \endcode
  79. To build the libraries and unit tests. The -j2 arguments tell scons how many threads compilation
  80. should occur on (parallel build). We recommend one per processor. Note, this only affects
  81. the speed of the build, not whether or not Lemma will have OpenMP support.
  82. \section Installing
  83. To install the library simply type:
  84. \code
  85. scons install
  86. \endcode
  87. To install to INSTALLDIR. Note depending on your machine, you may need sudo privileges to do this.
  88. Also, if you let INSTALLDIR=./lib this step will fail as those libraries are already located in Lemma/lib.
  89. Note that on a Mac, this step is crucial.
  90. */
  91. /** @} */
  92. }