OSHUN  beta
Arbitrary Order Spherical-Harmonic 1D-3P Vlasov-Fokker-Planck-Maxwell code
laser.h
Go to the documentation of this file.
1 
14 //**************************************************************
15 
16 #ifndef DECLERATION_PLASERSOURCE_H
17 #define DECLERATION_PLASERSOURCE_H
18 
19 //--------------------------------------------------------------
20  class IB_f00{
21 //--------------------------------------------------------------
22 // Decleration of Energy/Number-Conserving Algorithm
23 //--------------------------------------------------------------
24  private:
25 // retain a reference to the slope
26  valarray<double>& fh;
27 
28 // Define the velocity axis
29  valarray<double> vr;
30 
31 // Parameters
32  valarray<double> U4, U4m1, U2, U2m1;//, U1, U1m1;
33  valarray<double> Inv_Uav6, gn, Qn, Pn;
34 
35 // Define the integrals
36  // valarray<double> I2, I4; // J1,
37 
38 // Constant
40  double Inv_Uav6_nm1, Pnm1;
41 
43 
44  public:
45 // Constructors/Destructors
46  IB_f00(valarray<double>& fslope, double pmax);
47 
48 // Explicit Advance
49  valarray<double>& Getslope(const valarray<double>& fin, const double vos, const double Zval);
50  };
51 //--------------------------------------------------------------
52 //**************************************************************
53 
54 //--------------------------------------------------------------
55 //><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><-><
56 
57 //**************************************************************
58 // Decleration for the standard RK4 class for valarrays
59 //**************************************************************
60 
61 //**************************************************************
62 //--------------------------------------------------------------
63  class RK4_IB {
64 //--------------------------------------------------------------
65 // Decleration of the 4rth order Runge-Kutta Class
66 //--------------------------------------------------------------
67  public:
68 // Constructor
69  RK4_IB(valarray<double>& fin, double pmax, int tout_start);
70 
71 // Main function
72  RK4_IB& advance(const double vosc, const double Zval);
73 
74 // Access
75  double& tout();
76  double& time();
77  size_t& numh();
78  double& th();
79 
80  private:
81 // Helper functions
82  valarray<double>& F(const valarray<double>& fin, const double vosc, const double Zval);
83 
84 // Variables
85  valarray<double> f0, f1, fh;
86  valarray<double>& f;
87 
88 
90 
91  size_t num_h;
92  double h, t, Tout;
93  };
94 //--------------------------------------------------------------
95 //**************************************************************
96 
97 //**************************************************************
98 //--------------------------------------------------------------
100 //--------------------------------------------------------------
101 // Decleration of the Phenomenological Laser Source
102 //--------------------------------------------------------------
103  public:
104 // Constructors/Destructors
105  // InverseBremsstrahlung(DistFunc1D& DFin, int tout_start, const valarray<double>& grid);
106  InverseBremsstrahlung(double pmax, size_t nump, size_t numx, int tout_start, const valarray<double>& grid);
107 
108 // Explicit Advance
109  void loop(SHarmonic1D& f0, valarray<double>& Zarray, const double& tnew);
110 
111  valarray<double> U2, U2m1;//, U1, U1m1;
112 
113 // Laser Temporal Evolution
114  // double t_Profile(const double& t2);
115 
116 // Laser polarization
117  int IBSOURCE() const;
118 
119  private:
120 
121 // Variables
122  // DistFunc1D& DF;
123 
124  double t, tout;
125 
126 // harmonic data
127  valarray<double> fc;
128 
129 
130 // Algorithm
132 
133  valarray<double> vr;
134 
135  // Status
137 
138 
139  int Nbc, szx, szy;
140 
141 // Define the velocity axis
142 
143 
144 
145 
146 // Laser profile
147  valarray<double> IL_xprofile;//, IL_yprofile;
148 
149 // Laser profile
150  // Axis< double > xaxis;
151 
152 // Define laser profile
153  // const double rise_time, fall_time, flat_time;
154  const double vos, omega_0, omega_p, w0overwp;
155  // const bool linear_Ivst, polynomial_Ivst;
156  };
157 //--------------------------------------------------------------
158 //**************************************************************
159 
160 #endif
const double w0overwp
Definition: laser.h:154
valarray< double > Pn
Definition: laser.h:33
valarray< double > fc
Definition: laser.h:127
double Qn_coeff
Definition: laser.h:39
size_t num_h
Definition: laser.h:91
Definition: laser.h:20
valarray< double > vr
Definition: laser.h:133
double vw_coeff_cube
Definition: laser.h:39
double Tout
Definition: laser.h:92
valarray< double > Inv_Uav6
Definition: laser.h:33
IB_f00(valarray< double > &fslope, double pmax)
Definition: laser.cpp:50
valarray< double > & f
Definition: laser.h:86
valarray< double > gn
Definition: laser.h:33
A 1D Spherical Harmonic.
Definition: state.h:57
IB_f00 Inversebremsstrahlung
Definition: laser.h:89
valarray< double > U2
Definition: laser.h:32
valarray< double > & Getslope(const valarray< double > &fin, const double vos, const double Zval)
Definition: laser.cpp:119
double Inv_Uav6_nm1
Definition: laser.h:40
valarray< double > vr
Definition: laser.h:29
valarray< double > U4m1
Definition: laser.h:32
valarray< double > U2m1
Definition: laser.h:32
Formulary formulas
Definition: laser.h:42
valarray< double > U4
Definition: laser.h:32
double c_kpre
Definition: laser.h:39
double Pnm1
Definition: laser.h:40
valarray< double > U2m1
Definition: laser.h:111
valarray< double > & fh
Definition: laser.h:26
valarray< double > Qn
Definition: laser.h:33
valarray< double > fh
Definition: laser.h:85
Definition: laser.h:63
valarray< double > IL_xprofile
Definition: laser.h:147