src/Gradients/GrdPulses.cc
/* Note that ideal pulses, being infinitely narrow in time, are perfect pulses.
   That is, they produce the same flip angle and phase over the entire system,
   regardless of "pulse offset" (of which there is none). In gradient work this
   means that all systems in a gradient see the same pulse and hence may use
   the same pulse propagator. Some functions below do return an array of ideal
   pulse propagators for convenience, but they are all identical. Not to worry,
   GAMMA will know they are identical and not use any extra memory to store
   them.                                                                     */
Note that ideal pulses, being infinitely narrow in time, are perfect pulses.
That is, they produce the same flip angle and phase over the entire system,
regardless of "pulse offset" (of which there is none). In gradient work this
means that all systems in a gradient see the same pulse and hence may use
the same pulse propagator. Some functions below do return an array of ideal
pulse propagators for convenience, but they are all identical. Not to worry,
GAMMA will know they are identical and not use any extra memory to store
them.
Note that ideal pulses being infinitely narrow in time are perfect pulses . That is they produce the same flip angle and phase over the entire system regardless of " pulse offset " ( of which there is none ) . In gradient work this means that all systems in a gradient see the same pulse and hence may use the same pulse propagator . Some functions below do return an array of ideal pulse propagators for convenience but they are all identical . Not to worry GAMMA will know they are identical and not use any extra memory to store them .
vector<gen_op> Ixpulse_Us(const sys_gradz& sys, const string& I, double angle)
  {
  unsigned N = sys.NSS();			
  vector<gen_op> Us;				
  gen_op UIx = Ixpuls_U(sys, I, angle);		
  for(unsigned i=0; i<N; i++)			
    Us.push_back(UIx);				
  return Us;					
  }
vector < gen_op > Ixpulse_Us ( const sys_gradz & sys , const string & I , double angle ) { unsigned N = sys . NSS ( ) ; vector < gen_op > Us ; gen_op UIx = Ixpuls_U ( sys , I , angle ) ; for ( unsigned i = 0 ; i < N ; i ++ ) Us . push_back ( UIx ) ; return Us ; }
Note that ideal pulses, being infinitely narrow in time, are perfect pulses.
Note that ideal pulses being infinitely narrow in time are perfect pulses .
// # of sub-systems // Array of propagators // Ideal pulse propagator // Loop over sub-systesm // Set same prop. each system // Return the propagators