1. 15 Feb, 2018 1 commit
    • Andreas Nüßing's avatar
      [MEEGDriver] add statistics method · 844f5cc3
      Andreas Nüßing authored
      We add a new method to the MEEGDriver interface, namely `statistics`.
      The exact semantics of the method depends on the implementation, but
      it should write out statistics about the driver to the datatree.
      For the fitted driver, this currently means the volume and surface area
      of the different discrete compartments.
      For the unfitted driver, the semantics is similar as it writes out the
      volume and surface area of the different domains.
      844f5cc3
  2. 05 Feb, 2018 3 commits
  3. 04 Jan, 2018 2 commits
    • Andreas Nüßing's avatar
      [CutFEM] rename udg parts to unfitted · 667f2eb2
      Andreas Nüßing authored
      As many of the former udg components are now also used by cutfem, we rename
      them to unfitted to better distinguish between those parts that are really
      udg specific and those that are not.
      667f2eb2
    • Andreas Nüßing's avatar
      [CutFEM] add first implementation of cutfem · 16846497
      Andreas Nüßing authored
      We add a first implementation of a cutfem MEEG driver. This commit basically
      adds new necessary files and modifies the existing UDG files. They now
      behave in a similar way as the FittedMEEGDriver for the distinction between
      CG and DG.
      16846497
  4. 14 Nov, 2017 1 commit
    • Andreas Nüßing's avatar
      [UDG] add grain size parameter · 100bd8fa
      Andreas Nüßing authored
      In order to better control the parallelization, we add a grain size
      parameter which controls the maximal size of a block that is treated
      by a thread.
      100bd8fa
  5. 16 Oct, 2017 1 commit
  6. 06 Oct, 2017 2 commits
    • Andreas Nüßing's avatar
      [MultiThreading] first draft for multithreading · 4da59be8
      Andreas Nüßing authored
      We add a first draft of multithreading for the meeg driver.
      The computation and application of the transfer matrix are then
      done in parallel.
      In order to benefit from the multi-threading, the functions for
      applying the transfer matrices now take a list of dipoles instead
      of only a single dipole.
      
      If TBB is not found, we fall back to the sequential implementation.
      Each thread has its own local copy of the solver backend and the
      {EEG,MEG}TransferMatrixSolver using TBBs thread local storage.
      Within a parallelized call, the number of threads to be used by the
      scheduler can be limitied by setting `numberOfThreads` in the
      config tree. If `numberOfThreads` is not set, we let the scheduler
      decide about the number of threads.
      
      Since the interface now takes multiple dipoles, the `setSourceModel`
      method got removed and the source model is selected via the config
      tree of the apply{EEG,MEG}TransferMatrix or solveEEGForward methods.
      (This also simplifies the handling of the thread local storage).
      
      Note that this also adds a FindTBB.cmake script (MIT licensed).
      This should be removed, once support for TBB has entered dune-common.
      4da59be8
    • Andreas Nüßing's avatar
      [UDG] the level set functions do not store the data · 7d8b652a
      Andreas Nüßing authored
      As the dune-functions level set functions do not store the data,
      we need to keep a copy in the driver itself.
      7d8b652a
  7. 17 May, 2017 1 commit
    • Andreas Nüßing's avatar
      [ElectrodeProjection] add getter to meeg interface · 6cf7e400
      Andreas Nüßing authored
      We add a getter method to the meeg interface for recieving the
      projected electrodes in global coordinates.
      In addition, we provide a unit test, that checks if the projections
      are actually projections, e.g. if applying them once does not differ
      from applying them twice.
      6cf7e400
  8. 10 Feb, 2017 1 commit
    • Andreas Nüßing's avatar
      set source model and bind to dipole · 7d402898
      Andreas Nüßing authored
      this commit involves two main changes to the interface
      - binding of source models to dipoles:
          in order to avoid recreating different variables in between calls
          to 'assembleRightHandSide' and 'postProcess' for the same dipole,
          the source models now have a bind method which sets the dipole for
          the current source model
      - setting the source model of a driver
          on order to avoid recreating the source model for each dipole, the
          source model of the driver can now be set through the driver
          interface
      7d402898
  9. 08 Nov, 2016 1 commit
  10. 07 Nov, 2016 1 commit
    • Andreas Nüßing's avatar
      initial 2d support · 1527f9a2
      Andreas Nüßing authored
      currently, only fitted methods are supported in 2d. As the driver
      interface now depends on the dimension, the factory has become a
      class template.
      1527f9a2
  11. 31 Aug, 2016 1 commit
  12. 24 Aug, 2016 1 commit
  13. 19 Aug, 2016 2 commits
    • Andreas Nüßing's avatar
      [UDG] make level set data providable from outside · 65230a9b
      Andreas Nüßing authored
      Optionally, level set images can now be provided from the outside and
      do not have to be read from a nifti file. By this, we can directly pass
      numpy arrays or matlab matrices to the driver without having to write
      them to disk. A further modification should extend this to meshes for
      fitted drivers.
      65230a9b
    • Andreas Nüßing's avatar
      extract element search and move it to the driver · 61c4c151
      Andreas Nüßing authored
      so far, the kdtree was created multiple times, leading to decreased
      performance, especially when applying the transfer matrix. Now the
      kdtree lives in the driver classes
      61c4c151
  14. 04 Aug, 2016 4 commits
  15. 20 Jul, 2016 1 commit
  16. 18 Jul, 2016 4 commits
  17. 20 Jun, 2016 2 commits