JEMRIS  2.8.1
open-source MRI simulations
GradPulse.h
Go to the documentation of this file.
1 
5 /*
6  * JEMRIS Copyright (C)
7  * 2006-2015 Tony Stoecker
8  * 2007-2015 Kaveh Vahedipour
9  * 2009-2015 Daniel Pflugfelder
10  *
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License as published by
14  * the Free Software Foundation; either version 2 of the License, or
15  * (at your option) any later version.
16  *
17  * This program is distributed in the hope that it will be useful,
18  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  * GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License
23  * along with this program; if not, write to the Free Software
24  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25  */
26 
27 #ifndef _GRADPULSE_H_
28 #define _GRADPULSE_H_
29 
30 #include "Pulse.h"
31 
32 //forward declaration of EddyPulse (which itself is a GradPulse)
33 class EddyPulse;
34 
36 class GradPulse : public Pulse {
37 
38  public:
39 
43  GradPulse ();
44 
48  virtual ~GradPulse ();
49 
53  GradPulse (const GradPulse&);
54 
55  // @brief see Module::GetValue()
56  virtual void GetValue (double * dAllVal, double const time);
57 
66  virtual double GetGradient (double const time) = 0;
67 
68  // @brief see Module::Prepare
69  virtual bool Prepare (PrepareMode mode);
70 
76  virtual bool PrepareNLGfield (PrepareMode mode);
77 
81  virtual bool PrepareEddyCurrents (PrepareMode mode, int steps = 5000);
82 
89  double GetAreaNumeric (int steps);
90 
96  void SetArea (double val);
97 
106  void SetNonLinGradField(double const time);
107 
113  bool HasNonLinGrad(){return m_non_lin_grad; };
114 
118  virtual void GenerateEvents(std::vector<Event*> &events);
119 
120  protected:
126  virtual string GetInfo ();
127 
128  double m_slew_rate;
129  double m_max_ampl;
130  double m_rise_time;
131  double m_area;
134  double m_nlg_field;
135  double m_nlg_px;
136  double m_nlg_py;
137  double m_nlg_pz;
138  double m_nlg_val;
141  double m_eddy_time;
142  double m_eddy_val;
143  double m_ec_area;
146  bool m_hide;
148 };
149 
150 #endif
virtual ~GradPulse()
Definition: GradPulse.cpp:68
double m_max_ampl
The maximum amplitude of this gradient pulse.
Definition: GradPulse.h:129
double m_nlg_pz
z-position to compute the NLG field
Definition: GradPulse.h:137
virtual string GetInfo()
Definition: GradPulse.cpp:279
virtual void GenerateEvents(std::vector< Event * > &events)
Definition: GradPulse.cpp:211
virtual bool Prepare(PrepareMode mode)
see Module::Prepare()
Definition: GradPulse.cpp:160
double GetAreaNumeric(int steps)
get the area of this gradient pulse by numerical integration.
Definition: GradPulse.cpp:265
int m_ec_length
convolution length of eddy current
Definition: GradPulse.h:144
bool m_eddy_currents
A flag for nonlinear gradients.
Definition: GradPulse.h:140
double m_slew_rate
The slewrate of this gradient pulse.
Definition: GradPulse.h:128
double m_nlg_val
gradient value to compute the NLG field
Definition: GradPulse.h:138
bool HasNonLinGrad()
Check, whether this gradient is nonlinear.
Definition: GradPulse.h:113
void SetArea(double val)
Set the area of this gradient pulse.
Definition: GradPulse.cpp:259
double m_nlg_py
y-position to compute the NLG field
Definition: GradPulse.h:136
Implementation of JEMRIS Pulse.
double m_eddy_time
time of eddy current
Definition: GradPulse.h:141
bool m_hide
Hide this gradient (not played out, but its ECs!)
Definition: GradPulse.h:146
Pulse Super Class. ABC for all RF and gradient pulses.
Definition: Pulse.h:41
GradPulse()
Definition: GradPulse.cpp:32
virtual double GetGradient(double const time)=0
Get the value of the gradient pulse at time t.
double m_ec_area
area of eddy current
Definition: GradPulse.h:143
double m_area
The area of the gradient pulse.
Definition: GradPulse.h:131
EddyPulse * m_eddy_pulse
pulse for eddy currents
Definition: GradPulse.h:145
mode
Definition: Declarations.h:112
double m_nlg_px
x-position to compute the NLG field
Definition: GradPulse.h:135
virtual bool PrepareEddyCurrents(PrepareMode mode, int steps=5000)
Calculate Eddy Currents of this Gradient.
Definition: GradPulse.cpp:115
double m_nlg_field
Nonlinear gradient field (NLG)
Definition: GradPulse.h:134
Prototype of an Eddy pulse.
Definition: EddyPulse.h:35
void SetNonLinGradField(double const time)
Set the nonlinear gradient field term World::NonLinGradField.
Definition: GradPulse.cpp:247
double m_rise_time
The constant rise time of this gradient pulse.
Definition: GradPulse.h:130
Base class and prototype for all gradient pulses.
Definition: GradPulse.h:36
virtual bool PrepareNLGfield(PrepareMode mode)
Preparation of Nonlinear Gradient fields.
Definition: GradPulse.cpp:73
bool m_non_lin_grad
A flag for nonlinear gradients.
Definition: GradPulse.h:133
double m_eddy_val
value of eddy current
Definition: GradPulse.h:142
virtual void GetValue(double *dAllVal, double const time)
Get the value of this element.
Definition: GradPulse.cpp:202

-- last change 17.06.2016 | Tony Stoecker | Imprint --