40 void Setup_Y::parseprofile(
const valarray<double>& grid, std::string& str_profile, valarray<double>& profile);
61 U4(0.0, fslope.size()),
62 U4m1(0.0, fslope.size()),
63 U2(0.0, fslope.size()),
64 U2m1(0.0, fslope.size()),
66 Inv_Uav6(0.0, fslope.size()),
67 gn(0.0, fslope.size()),
68 Qn(0.0, fslope.size()),
69 Pn(0.0, fslope.size())
74 double re(2.8179402894e-13);
75 double kp(sqrt(4.0*M_PI*(
Input::List().density_np)*re));
76 double omega_0(3.0e+10*2.0*M_PI/(1.0e-4*
Input::List().lambda_0));
77 double omega_p(5.64 * 1.0e+4*sqrt(
Input::List().density_np));
85 for (
size_t i(0); i <
vr.size(); ++i) {
86 vr[i] =
vr[i] / (sqrt(1.0+
vr[i]*
vr[i]));
91 for (
size_t i(1); i <
U4.size(); ++i) {
92 U4[i] = 0.5 * pow(
vr[i],4) * (
vr[i]-
vr[i-1]);
93 U4m1[i] = 0.5 * pow(
vr[i-1],4) * (
vr[i]-
vr[i-1]);
100 for (
size_t i(0); i <
vr.size(); ++i) {
105 Qn[0] = 1.0 / ((
vr[0]*
vr[0]*
vr[1])/2.0);
106 for (
size_t i(1); i <
Qn.size()-1; ++i) {
107 Qn[i] = 1.0 / (
vr[i]*
vr[i]*(
vr[i+1]-
vr[i-1])/2.0);
111 for (
size_t i(0); i <
Pn.size()-1; ++i) {
112 Pn[i] = 1.0 / ((
vr[i+1]-
vr[i])/2.0*(
vr[i+1]+
vr[i]));
119 valarray<double>&
IB_f00::Getslope(
const valarray<double>& fin,
const double Zval ,
const double vos) {
125 double vw_cube, qn_c;
127 double p0overp1_sq(
vr[1]/
vr[0]);
128 p0overp1_sq *= p0overp1_sq;
132 double f00((fin[0]-fin[1]*p0overp1_sq)/(1.0-p0overp1_sq));
144 for (
int n(1); n <
U4.size(); ++n) {
145 I4 +=
U4[n]*fin[n]+
U4m1[n]*fin[n-1];
149 for (
int n(1); n <
U2.size(); ++n) {
150 I2 +=
U2[n]*fin[n]+
U2m1[n]*fin[n-1];
156 xsi = 3.84+(142.59-65.48*vos/sqrt(I2))/(27.3*vos/sqrt(I2)+vos*vos/I2);
157 for (
size_t i(0); i <
gn.size(); ++i) {
163 gn[i] = 1.0/(1.0+
gn[i]);
186 qn_c =
Qn_coeff*vos*vos*ZLn_ei*4.0*M_PI*I2;
188 fh[0] = qn_c *
Qn[0] * (
Pn[0] *
gn[0] * (fin[1]-fin[0])
191 for (
size_t i(1); i <
fh.size()-1; ++i) {
192 fh[i] = qn_c * Qn[i] * (
Pn[i] *
gn[i] * (fin[i+1]-fin[i])
193 -
Pn[i-1] *
gn[i-1] * (fin[i]-fin[i-1]));
217 :t(static_cast<double>(tout_start) *
224 Inversebremsstrahlung(
fh, pmax){
242 valarray<double>&
RK4_IB::F(
const valarray<double>& fin,
const double vosc,
const double Zval) {
258 fh *= (1.0/3.0);
f +=
fh;
264 fh *= (2.0/3.0);
f +=
fh;
270 fh *= (1.0/3.0);
f +=
fh;
301 :
t(static_cast<double>(tout_start) *
305 rk4_ib(fc, pmax, tout_start),
309 InvBremsstrahlung(
Input::
List().inverse_bremsstrahlung),
311 omega_0(3.0e+10*2.0*M_PI/(1.0e-4*
Input::
List().lambda_0)),
312 omega_p(5.64 * 1.0e+4*sqrt(
Input::
List().density_np)),
313 w0overwp(omega_0/omega_p),
332 for (
size_t i(1); i <
U2.size(); ++i) {
401 valarray< double > Vos(0.0,f0.
numx());
404 for (
size_t ix(0); ix < f0.
numx(); ++ix){
416 for (
size_t ix(0); ix <
szx-2*
Nbc; ++ix){
419 for (
size_t ip(0); ip <
fc.size(); ++ip){
421 fc[ip] = f0(ip,ix+Nbc).real();
423 double I2_before(0.0);
424 for (
int n(1); n <
U2.size(); ++n) {
430 for (
size_t h_step(0); h_step <
rk4_ib.
numh(); ++h_step){
434 double I2_after(0.0);
435 for (
int n(1); n <
U2.size(); ++n) {
438 fc *= I2_before/I2_after;
440 for (
int ip(0); ip <
fc.size(); ++ip){
442 f0(ip,ix+Nbc) =
fc[ip];
valarray< double > & F(const valarray< double > &fin, const double vosc, const double Zval)
exprtk::parser< double > parser_t
Underlying data structures.
exprtk::expression< double > expression_t
Laser source - Declarations.
valarray< double > Inv_Uav6
IB_f00(valarray< double > &fslope, double pmax)
RK4_IB & advance(const double vosc, const double Zval)
RK4_IB(valarray< double > &fin, double pmax, int tout_start)
IB_f00 Inversebremsstrahlung
valarray< double > & Getslope(const valarray< double > &fin, const double vos, const double Zval)
Grid Setup - Declaration.
void loop(SHarmonic1D &f0, valarray< double > &Zarray, const double &tnew)
Fields, Distributions, Harmonics, States - Declarations.
valarray< T > MakeCAxis(const T min, const T max, const size_t N)
InverseBremsstrahlung(double pmax, size_t nump, size_t numx, int tout_start, const valarray< double > &grid)
void parseprofile(const valarray< double > &grid, std::string &str_profile, valarray< double > &profile)
{ function_description }
void checkparse(parser_t &parser, std::string &expression_str, expression_t &expression)
valarray< double > IL_xprofile