1. 14 Jan, 2013 1 commit
  2. 08 Jan, 2013 1 commit
  3. 05 Sep, 2012 1 commit
  4. 20 Jun, 2012 1 commit
  5. 19 Jun, 2012 1 commit
    • Matthias Toggweiler's avatar
      optimization for AMTS: join two neighboring calls to push(0.5 * h). For... · 17576d0b
      Matthias Toggweiler authored
      optimization for AMTS: join two neighboring calls to push(0.5 * h). For reduced space charge solve frequency, this reduces push timer to almost 50%. This optimization is not applicable for the default algorithm, as the half pushes there are interleaved with step dumping to stdout (even if there is no stat/ps dump). This optimization could be carried over to MTS method in Cyclotron.
      17576d0b
  6. 17 Jun, 2012 1 commit
  7. 16 Jun, 2012 1 commit
    • Matthias Toggweiler's avatar
      AMTS should now support multi-node and multi-bin simulation. Here is a quick usage guide: · f97692f6
      Matthias Toggweiler authored
      To use AMTS integrator in OPAL-T, add the attribute-value pair TIMEINTEGRATOR="AMTS" to the
      TRACK element. Another attribute DTSCINIT on the same element controls the initial time step (in
      seconds) used for space charge. The multiple time stepping scheme uses an outer time step for space
      charge integration, and inner time steps for basic integration. The inner steps are roughly constant
      and equal to the value specified with the DT attribute. The outer step can change freely if space
      charge forces change their magnitude. Example of a TRACK command where a reduced space charge solve
      frequency is used:
      
          track,line=IW2Line, beam=beam1, MAXSTEPS=56000, DTSCINIT=5.0e-10, DT=1.0e-11, ZSTOP=100.0, TIMEINTEGRATOR="AMTS";
      
      AMTS does not (and will probably never) support emission simulation. In such a case, use a short
      track with the default integrator (MAXSTEPS set such that emission is just finished) and use AMTS in
      the follow-up track.
      
      AMTS does not yet support boundary geometry, wake fields, surface physics. This should be possible
      to add without problems, and the only reason it is not supported yet is that it made the initial
      implementation shorter.
      
      As the (outer) time step size is no more constant, some question arises how this is handled. AMTS
      makes a statistics (.stat) and phase space (.h5) dump at the same times when the default integrator
      would have done it. Therefore, AMTS dumps at multiple of times DT * STATDUMPFREQ and DT * PSDUMPFREQ.
      To reach these times exactly, the variable step size is shortened if necessary. Be careful to not
      set the *DUMPFREQ-numbers too low, as this limits the freedom of AMTS' step size choice. AMTS stops
      exactly at time DT * MAXSTEPS, or after ZSTOP has been crossed. Repartitioning happens if the last
      repartitioning is at least DT * REPARTFREQ in the past (here no extra stop is made to
      reach the old repartitioning times exactly).
      
      As said earlier, AMTS can save time in many simulations where a reduced space charge solve frequency
      is still enough precise. For gun simulations, an initial high space charge solve frequency can be
      used, as it is lowered automatically when space charge forces decrease in magnitude.
      
      Later, we can put AMTS into user guide.
      f97692f6
  8. 13 Jun, 2012 1 commit
    • Matthias Toggweiler's avatar
      AMTS integrator for OPAL-T: · 61c84bfe
      Matthias Toggweiler authored
          - The adaptive multiple time stepping integrator introduces separate time steps for space
            charge and "basic" external field integration.
          - Two kind of simulations will profit from it:
                1) Space charge dominated scenarios, where the space charge forces vary greatly, e.g.
                   gun simulations ("A aspect")
                2) Scenarios where space charge is not dominant, but has a visible effect. Lowering
                   of solver frequency can save considerable amaount of time while staying close to
                   solution with full solve frequency ("MTS aspect")
          - First basic version, not yet tested well
          - Currently works only for single node and single bin
          - Details how to use it will follow
      61c84bfe
  9. 21 Apr, 2012 1 commit
  10. 18 Apr, 2012 1 commit
  11. 17 Apr, 2012 1 commit
    • adelmann's avatar
      In OPAL several different TRACK's can performed within one simulation (does... · 06df9215
      adelmann authored
      In OPAL several different TRACK's can performed within one simulation (does not hold for OPAL-cycl yet) this together with 
      the restart capabilities calls for a delicate logic.
      
      Different tracks, looks like: 
      
      .....
      
      TRACK, LINE= Injector, BEAM=beam1, MAXSTEPS=100, DT=1.0e-12, ZSTOP=0.14;  
       RUN, METHOD = "PARALLEL-T", BEAM = beam1, FIELDSOLVER = Fs1, DISTRIBUTION = Dist1;
      ENDTRACK;
      
      TRACK,LINE= Injector, BEAM=beam1, MAXSTEPS=50, DT=1.0e-11, ZSTOP=0.20;
       RUN, METHOD = "PARALLEL-T", BEAM=beam1, FIELDSOLVER=Fs1;
      ENDTRACK;
      STOP;
      
      A run with the arguments -restart -1 will continue a track from the last dump in the h5 file. Other the from the last track will
      at the moment certainly fail in the general case. 
      
      Changes: 
      
      - The h5 attribute TrackStep is not longer available anymore. Two new attributes: LocalTrackStep and GlobalTrackStep are introduced instead.
      
      - LocalTrackStep refers to the track step in a track command (0 ... 99 and 0... 49 in teh above example), where the GlobalTrackStep is the 
      accumulated number of steps i.e. 0 ... 149, shown in OPAL's screen output. Both local and global track steps are also written into the h5 file 
      in order to properly restart the simulation.
      
      - The PartBunch object has get/set and increment functions:
      
          inline void setGlobalTrackStep(long long n) {globalTrackStep_m = n;}
          inline long long getGlobalTrackStep() const {return globalTrackStep_m;}
      
          inline void setLocalTrackStep(long long n) {localTrackStep_m = n;}
          inline long long getLocalTrackStep() const {return localTrackStep_m;}
          inline void incLocalTrackStep() {localTrackStep_m++; globalTrackStep_m++;)
      
              
      - In OPAL-cyc getTrackStep is replace by getLocalTrackStep assuming we only have one TRACK in the simulation.
      
      - In the ParallelTTracker at the end of the main loop (in execute()) obsolet code is removed (cleanup monitors etc.)
        
      For details see the diff :-)
      
      Still some work todo: 
      
      a) Need to remove: setLastStep in ParallelTTracker.cpp and in general
      
          getInstance()->getLastStep()
          getInstance()->getRestartStep() maybe not!
      
      b) The get/set and increment functions could very well be in an other class!
      
      c) ParallelPlate tests are broken but maybe also because of other changes need to fix this 
         together with Chuang and Achim
      
      d) Make sure the restart works in OPAL-cycl we do not have yet a regression test for that.
      
      06df9215
  12. 29 Mar, 2012 1 commit
  13. 15 Mar, 2012 1 commit