45 vr(
Algorithms::
MakeCAxis(0.0,pmax,nump)), C_RB(0.0,nump+1), D_RB(0.0,nump+1), delta_CC(0.0,nump+1),
46 mass(_mass), dt(_deltat),
47 dvr(0.0,nump), vrh(0.0,nump), dtoverv2(nump),
48 p2dp(0.0,nump),p2dpm1(0.0,nump),phdp(0.0,nump),phdpm1(0.0,nump), p4dp(0.0,nump), laser_Inv_Uav6(0.0,nump),
55 double re(2.8179402894e-13);
56 double kp(sqrt(4.0*M_PI*(
Input::List().density_np)*re));
60 for (
size_t i(0); i <
vr.size(); ++i) {
64 for (
size_t i(0); i <
vr.size()-1; ++i) {
71 for (
size_t i(1); i <
vr.size(); ++i) {
74 p4dp[i] = 0.5 * pow(
vr[i],4) * (
vr[i]-
vr[i-1]);
81 for (
size_t i(0); i <
vr.size(); ++i) {
87 for (
size_t i(0); i <
vr.size(); ++i) {
91 double omega_0(3.0e+10*2.0*M_PI/(1.0e-4*
Input::List().lambda_0));
92 double omega_p(5.64 * 1.0e+4*sqrt(
Input::List().density_np));
111 for (
int n(1); n <
C_RB.size(); ++n) {
113 C_RB[n] =
vr[n - 1] *
vr[n - 1] *
dvr[n - 1] * fin[n - 1];
131 valarray<double> innersum(fin.size() - 1);
133 int n(innersum.size()-1);
136 innersum[n] = (1.0 - delta) * fin[n + 1] + delta * fin[n];
137 innersum[n] *= (
vr[n + 1] *
vr[n + 1] -
vr[n] *
vr[n]);
142 for (n; n > -1; --n) {
143 innersum[n] = (1.0 - delta) * fin[n + 1] + delta * fin[n];
144 innersum[n] *= (
vr[n + 1] *
vr[n + 1] -
vr[n] *
vr[n]);
146 innersum[n] += innersum[n + 1];
155 for (
size_t l(1); l < k + 1; ++l) {
156 answer +=
vr[l - 1] *
vr[l - 1] *
dvr[l - 1] * innersum[l - 1];
159 answer *= 4.0 * M_PI;
160 answer *= 1.0 / (
vr[k - 1] +
vr[k]);
167 size_t iterations(0);
168 bool iteration_check(0);
185 for (
size_t k(1); k < fin.size(); ++k){
195 if (fabs(D-Dold) <
Input::List().RB_D_tolerance*(1.0+fabs(D+Dold))) iteration_check = 1;
201 if (iterations >
Input::List().RB_D_itmax) iteration_check = 1;
204 }
while(!iteration_check);
226 double W = 0.5*(
dvr[k-1]+
dvr[k])*C/D;
229 answer = 1.0/W - 1.0/(exp(W)-1.0);
245 double g, b0, nueff, xsi;
250 for (
size_t ip(1); ip <
D_RB.size()-1; ++ip){
260 D_RB[ip] += heating_coefficient * g /
vr[ip];
268 double collisional_coefficient;
269 double heating_coefficient;
279 collisional_coefficient *= 4.0*M_PI/3.0*
c_kpre;
284 heating_coefficient *=
c_kpre / 6.0 * pow(vos,2.0) *
C_RB[
C_RB.size()-1];
285 heating_coefficient /= collisional_coefficient;
294 LHS(ip, ip + 1) = -
dtoverv2[ip] * collisional_coefficient
298 LHS(ip , ip) = 1.0 -
dtoverv2[ip] * collisional_coefficient
303 for (ip = 1; ip < fin.size() - 1; ++ip){
304 LHS(ip, ip + 1) = -
dtoverv2[ip] * collisional_coefficient
308 LHS(ip , ip) = 1.0 -
dtoverv2[ip] * collisional_coefficient
312 LHS(ip, ip - 1) =
dtoverv2[ip] * collisional_coefficient
320 LHS(ip , ip) = 1.0 -
dtoverv2[ip] * collisional_coefficient
324 LHS(ip, ip - 1) =
dtoverv2[ip] * collisional_coefficient
345 double collisional_coefficient;
346 double heating_coefficient;
356 collisional_coefficient *= 4.0*M_PI/3.0*
c_kpre;
361 heating_coefficient *=
c_kpre / 6.0 * pow(vos,2.0) *
C_RB[
C_RB.size()-1];
362 heating_coefficient /= collisional_coefficient;
371 LHStemp(ip, ip + 1) = -
dtoverv2[ip] * collisional_coefficient
375 LHStemp(ip , ip) = 1.0 -
dtoverv2[ip] * collisional_coefficient
380 for (ip = 1; ip < fin.size() - 1; ++ip){
381 LHStemp(ip, ip + 1) = -
dtoverv2[ip] * collisional_coefficient
385 LHStemp(ip , ip) = 1.0 -
dtoverv2[ip] * collisional_coefficient
389 LHStemp(ip, ip - 1) =
dtoverv2[ip] * collisional_coefficient
397 LHStemp(ip , ip) = 1.0 -
dtoverv2[ip] * collisional_coefficient
401 LHStemp(ip, ip - 1) =
dtoverv2[ip] * collisional_coefficient
427 : fin(0.0, DFin(0,0).nump()), fout(0.0, DFin(0,0).nump()),
430 heatingprofile(0.0,DFin(0,0).numx()), coolingprofile(0.0,DFin(0,0).numx()),
431 ib(((DFin.q() == -1) && (DFin.
mass() == 1))),
432 collide(DFin(0,0).nump(),DFin.pmax(),DFin.
mass(), deltat,
ib)
453 valarray<double> RHSv(0.0,f00.
numx()*f00.
nump());
454 valarray<double> solution(0.0,f00.
numx()*f00.
nump());
472 for (
size_t ix(0); ix <
szx; ++ix){
476 for (
size_t ip(0); ip <
fin.size(); ++ip){
477 fin[ip] = (f00(ip,ix)).real();
485 ixtimesnump = ix * f00.
nump();
487 for (
size_t ip(0); ip <
fin.size(); ++ip){
490 LHS(ip + ixtimesnump, ip + 1 + ixtimesnump) = LHStemp(ip, ip + 1);
492 else if (ip == f00.
nump() - 1)
494 LHS(ip + ixtimesnump, ip - 1 + ixtimesnump) = LHStemp(ip, ip - 1);
497 LHS(ip + ixtimesnump, ip - 1 + ixtimesnump) = LHStemp(ip, ip - 1);
498 LHS(ip + ixtimesnump, ip + 1 + ixtimesnump) = LHStemp(ip, ip + 1);
501 LHS(ip + ixtimesnump, ip + ixtimesnump) = LHStemp(ip, ip);
503 RHSv[ip + ixtimesnump] =
fin[ip];
518 for (
size_t ix(0); ix <
szx; ++ix){
519 ixtimesnump = ix * f00.
nump();
520 for (
size_t ip(0); ip <
fin.size(); ++ip){
521 f00h(ip,ix) = solution[ip + ixtimesnump];
571 double re(2.8179402894e-13);
572 double kp(sqrt(4.0*M_PI*(
Input::List().density_np)*re));
573 c_kpre = 4.0*M_PI/3.0*re*kp;
579 for (
size_t i(0); i <
vr.size(); ++i) {
580 vr[i] =
vr[i] / (sqrt(1.0+
vr[i]*
vr[i]));
585 for (
size_t i(1); i <
U4.size(); ++i) {
586 U4[i] = 0.5 * pow(
vr[i],4) * (
vr[i]-
vr[i-1]);
587 U4m1[i] = 0.5 * pow(
vr[i-1],4) * (
vr[i]-
vr[i-1]);
590 U1[i] = 0.5 *
vr[i] * (
vr[i]-
vr[i-1]);
596 for (
size_t i(0); i <
U3.size(); ++i) {
597 U3[i] = pow(
vr[i],3);
600 Qn[0] = 1.0 / ((
vr[0]*
vr[0]*
vr[1])/2.0);
601 for (
size_t i(1); i <
Qn.size()-1; ++i) {
602 Qn[i] = 1.0 / (
vr[i]*
vr[i]*(
vr[i+1]-
vr[i-1])/2.0);
605 for (
size_t i(0); i <
Pn.size()-1; ++i) {
606 Pn[i] = 1.0 / ((
vr[i+1]-
vr[i])/2.0*(
vr[i+1]+
vr[i]));
624 double f00( (fin[0] - fin[1]*(
vr[0]*
vr[0])/(vr[1]*vr[1]))/
625 (1.0 - (vr[0]*vr[0])/(vr[1]*vr[1])) );
627 i2s = f00*pow(vr[n],3)/3.0 + (fin[1]-f00)*pow(vr[n],5)/(vr[1]*vr[1])*0.2;
628 i4s = f00*pow(vr[n],5)*0.2 + (fin[1]-f00)*pow(vr[n],7)/(vr[1]*vr[1]*7.0);
630 return fin[n]*i4s + (pow(vr[n],3)*fin[n]-3.0*i2s) *
J1[n];
648 for (
int n(1); n <
I4.size(); ++n) {
649 I4[n] =
U4[n]*fin[n]+
U4m1[n]*fin[n-1];
654 for (
int n(1); n <
I2.size(); ++n) {
655 I2[n] =
U2[n]*fin[n]+
U2m1[n]*fin[n-1];
660 for (
int n(
J1.size()-2); n > -1; --n) {
661 J1[n] =
U1[n+1]*fin[n+1]+
U1m1[n+1]*fin[n];
689 for (
int n(0); n <
I4.size(); ++n) {
701 for (
int n(0); n <
NB; ++n) {
708 fh[0] = (-1.0)*
I4[0];
709 for (
int n(0); n <
I4.size()-1; ++n)
I4[n] -=
I4[n+1];
712 fh[0] *= 2.0/ (
vr[0]*
vr[0]);
713 for (
int n(0); n <
I4.size()-1; ++n)
I4[n] *=
Pn[n];
717 for (
int n(0); n <
I4.size()-1; ++n)
I4[n] -=
I4[n+1];
721 for (
int n(0); n <
I4.size()-1; ++n) fh[n+1] =
Qn[n+1]*
I4[n];
747 :collide(nump,pmax,mass){}
773 : fin(0.0, DFin(0,0).nump()),
775 rkf00(DFin(0,0).nump(), DFin.pmax(), DFin.mass()),
776 num_h(size_t(deltat/
Input::
List().small_dt)+1)
778 h = deltat/
static_cast<double>(
num_h);
795 for (
size_t ix(0); ix <
szx; ++ix){
799 for (
size_t ip(0); ip <
fin.size(); ++ip){
800 fin[ip] = (f00(ip,ix)).real();
805 for (
size_t h_step(0); h_step <
num_h; ++h_step){
810 for (
int ip(0); ip <
fin.size(); ++ip){
811 f00h(ip,ix) =
fin[ip];
849 Scattering_Term(0.0, nump),
853 Alpha_Tri(nump, nump),
854 if_tridiagonal(
Input::
List().if_tridiagonal),
860 double re(2.8179402894e-13);
861 double kp(sqrt(4.0*M_PI*(
Input::List().density_np)*re));
866 for (
size_t i(0); i <
vr.size(); ++i) {
876 for (
size_t i(1); i <
U4.size(); ++i) {
877 U4[i] = 0.5 * pow(
vr[i],4) * (
vr[i]-
vr[i-1]);
878 U4m1[i] = 0.5 * pow(
vr[i-1],4) * (
vr[i]-
vr[i-1]);
881 U1[i] = 0.5 *
vr[i] * (
vr[i]-
vr[i-1]);
906 double idp = 1.0/(
vr[2] -
vr[1]);
919 for (
int k(1); k <
I2.size(); ++k) {
920 I2[k] =
U4[k]*fin[k]+
U4m1[k]*fin[k-1];
923 I0[k] =
U2[k]*fin[k]+
U2m1[k]*fin[k-1];
940 for (
int k(
J1m.size()-2); k > -1; --k) {
941 J1m[k] =
U1[k+1]*fin[k+1]+
U1m1[k+1]*fin[k];
965 for (
int k(0); k <
J1m.size(); ++k){
966 I2[k] /=
vr[k] *
vr[k] / 4.0 / M_PI;
968 J1m[k] *= 4.0 * M_PI *
vr[k];
982 valarray<double> TriI1(fin), TriI2(fin);
984 for (
int i(0); i < TriI1.size(); ++i){
985 TriI1[i] = I0[i] + (2.0*
J1m[i] -
I2[i]) / 3.0 ;
986 TriI2[i] = (
I2[i] +
J1m[i] ) / 3.0 ;
1010 double IvDnDm1, IvDnDp1, Ivsq2Dn;
1012 for (
int i(1); i < TriI1.size()-1; ++i){
1013 IvDnDm1 = 1.0 / (
vr[i] * 0.5*(
vr[i+1]-
vr[i-1]) * (
vr[i] -
vr[i-1]));
1014 IvDnDp1 = 1.0 / (
vr[i] * 0.5*(
vr[i+1]-
vr[i-1]) * (
vr[i+1] -
vr[i] ));
1015 Ivsq2Dn = 1.0 / (
vr[i] *
vr[i] * (
vr[i+1] -
vr[i-1]));
1016 Alpha_Tri(i, i ) = 8.0 * M_PI * fin[i] - TriI2[i] * (IvDnDm1 + IvDnDp1);
1017 Alpha_Tri(i, i-1) = TriI2[i] * IvDnDm1 - TriI1[i] * Ivsq2Dn;
1018 Alpha_Tri(i, i+1) = TriI2[i] * IvDnDp1 + TriI1[i] * Ivsq2Dn;
1086 for (
int n(1); n < fin.size()-1; ++n) {
1087 df0[n] = fin[n+1]-fin[n-1];
1093 for (
int n(1); n < fin.size(); ++n) {
1094 ddf0[n] = (fin[n-1]-fin[n]) ;
1098 for (
int n(1); n < fin.size()-1; ++n) {
1104 double f00 = ( fin[0] - ( (
vr[0]*
vr[0])/(
vr[1]*
vr[1]) ) *fin[1] )
1105 / (1.0 - (vr[0]*vr[0])/(vr[1]*vr[1]));
1106 ddf0[0] = 2.0 * (fin[1] - f00) / (vr[1]*vr[1]);
1110 for (
int n(0); n < fin.size()-1; ++n) {
1111 df0[n] /= vr[n]*vr[n];
1112 ddf0[n] /= 2.0 *vr[n];
1131 valarray<complex<double> > fout(fin);
1146 double A1( (LL+1.0)*(LL+2.0) / ((2.0*LL+1.0)*(2.0*LL+3.0)) );
1147 double A2( (-1.0) *(LL-1.0)* LL / ((2.0*LL+1.0)*(2.0*LL-1.0)) );
1148 double B1( (-1.0) *( 0.5 *LL*(LL+1.0) +(LL+1.0) ) / ((2.0*LL+1.0)*(2.0*LL+3.0)) );
1149 double B2( ( (-0.5)*LL*(LL+1.0) +(LL+2.0) ) / ((2.0*LL+1.0)*(2.0*LL+3.0)) );
1150 double B3( ( 0.5 *LL*(LL+1.0) +(LL-1.0) ) / ((2.0*LL+1.0)*(2.0*LL-1.0)) );
1151 double B4( ( 0.5 *LL*(LL+1.0) - LL ) / ((2.0*LL+1.0)*(2.0*LL-1.0)) );
1154 for (
int i(0); i < Alpha.
dim1()-1; ++i){
1155 double t1( A1*
ddf0[i] + B1*
df0[i] );
1157 double t2( A1*
ddf0[i] + B2*
df0[i] );
1159 double t3( A2*
ddf0[i] + B3*
df0[i] );
1161 double t4( A2*
ddf0[i] + B4*
df0[i] );
1164 Alpha(i,0) += t1 * ( 2.0*M_PI*pow(
vr[0]/
vr[i],el+2)*
vr[0]*
vr[0]*(
vr[1]-
vr[0]) );
1165 Alpha(i,0) += t3 * ( 2.0*M_PI*pow(
vr[0]/
vr[i],el) *
vr[0]*
vr[0]*(
vr[1]-
vr[0]) );
1167 for (
int j(1); j < i; ++j){
1168 Alpha(i,j) += t1 * ( 2.0*M_PI*pow(
vr[j]/
vr[i],el+2)*
vr[j]*
vr[j]*(
vr[j+1]-
vr[j-1]) );
1169 Alpha(i,j) += t3 * ( 2.0*M_PI*pow(
vr[j]/
vr[i],el) *
vr[j]*
vr[j]*(
vr[j+1]-
vr[j-1]) );
1172 Alpha(i,i) += t1 * ( 2.0*M_PI *
vr[i]*
vr[i]*(
vr[i]-
vr[i-1]) );
1173 Alpha(i,i) += t3 * ( 2.0*M_PI *
vr[i]*
vr[i]*(
vr[i]-
vr[i-1]) );
1175 Alpha(i,i) += t2 * ( 2.0*M_PI *
vr[i]*
vr[i]*(
vr[i+1]-
vr[i]) );
1176 Alpha(i,i) += t4 * ( 2.0*M_PI *
vr[i]*
vr[i]*(
vr[i+1]-
vr[i]) );
1178 for (
int j(i+1); j < Alpha.
dim2()-1; ++j){
1179 Alpha(i,j) += t2 * ( 2.0*M_PI*pow(
vr[j]/
vr[i],-el-1)*
vr[j]*
vr[j]*(
vr[j+1]-
vr[j-1]) );
1180 Alpha(i,j) += t4 * ( 2.0*M_PI*pow(
vr[j]/
vr[i],-el+1)*
vr[j]*
vr[j]*(
vr[j+1]-
vr[j-1]) );
1188 double ll1(static_cast<double>(el));
1189 ll1 *= (-0.5)*(ll1 + 1.0);
1191 for (
int i(0); i < Alpha.
dim1(); ++i){
1207 cout <<
"WARNING: Matrix is not diagonally dominant" << endl;
1212 cout <<
"WARNING: Matrix is not diagonally dominant" << endl;
1241 : f00(0.0, DFin(0).nump()),
1242 fc(0.0,DFin(0).nump()),
1245 implicit_step(DFin.pmax(),DFin(0).nump(),DFin.
mass()),
1273 for (
size_t ix(0); ix <
szx; ++ix){
1276 for (
size_t ip(0); ip <
fc.size(); ++ip){
1277 f00[ip] = (DF(0,0)(ip,ix)).real();
1288 for (
int ip(0); ip < DF(1,m).nump(); ++ip) {
1289 fc[ip] = DF(1,m)(ip,ix);
1298 for (
int ip(0); ip < DF(1,m).nump(); ++ip) {
1299 DFh(1,m)(ip,ix) =
fc[ip];
1320 for (
size_t ix(0); ix <
szx; ++ix){
1324 for (
size_t ip(0); ip <
fc.size(); ++ip){
1325 f00[ip] = (DF(0,0)(ip,ix)).real();
1331 for(
int l(2); l <
l0+1 ; ++l){
1332 for(
int m(0); m < ((
m0 < l)?
m0:l)+1; ++m){
1335 for (
size_t ip(0); ip <
fc.size(); ++ip){
1336 fc[ip] = (DF(l,m))(ip,ix);
1343 for (
size_t ip(0); ip <
fc.size(); ++ip){
1344 DFh(l,m)(ip,ix) =
fc[ip];
1362 : self_f00_exp_collisions(DFin, deltat),
1363 self_f00_imp_collisions(DFin, deltat),
1364 self_flm_collisions(DFin, deltat){}
1376 else if (
Input::List().f00_implicitorexplicit == 1) {
1400 for(
size_t s(0); s < Yin.
Species(); ++s){
1405 for (
size_t sind(0); sind < Yin.
Species(); ++sind){
1420 Yh = complex<double>(0.0,0.0);
1429 for (
size_t s(0); s < Yin.
Species(); ++s){
1430 for (
size_t i(0); i < Yin.
DF(s).
dim(); ++i){
1431 Yin.
DF(s)(i) =
Yh.
DF(s)(i);
1442 for(
size_t s(0); s < Yin.
Species(); ++s)
1448 for (
size_t sind(0); sind < Yin.
Species(); ++sind){
1473 for(
size_t s(0); s < Yin.
Species(); ++s)
1479 for (
size_t sind(0); sind < Yin.
Species(); ++sind){
1498 for(
size_t s(0); s < Yin.
Species(); ++s)
1504 for (
size_t sind(0); sind < Yin.
Species(); ++sind){
int Nbc
Number of boundary cells in each direction.
valarray< double > vr
Define the velocity axis.
void advanceflm(State1D &Y, State1D &Yh)
void update_D_inversebremsstrahlung(const double &Z0, const double &heatingcoefficient, const double &vos)
bool Thomas_Tridiagonal(Array2D< double > &A, valarray< double > &d, valarray< double > &xk)
The tridiagonal solver for implicit collisions.
valarray< double > coolingprofile
int szx
Total cells including boundary cells in x-direction.
int szx
Total cells including boundary cells in x-direction.
Underlying data structures.
void takestep(const valarray< double > &fin, valarray< double > &fh)
The top-level container for self collisions over all species on l=0.
void getleftside(valarray< double > &fin, const double &Z0, const double &heating, const double &cooling, Array2D< double > &LHStemp)
self_f00_explicit_collisions self_f00_exp_collisions
void operator()(const valarray< double > &fin, valarray< double > &fslope)
self_f00_implicit_collisions self_f00_imp_collisions
void update_D_and_delta(valarray< double > &fin)
void loop(SHarmonic1D &SHin, valarray< double > &Zarray, const double time, SHarmonic1D &SHout)
int Nbc
Number of boundary cells in each direction.
valarray< double > p2dp
Various coefficients for the integrals.
void loop(SHarmonic1D &SHin, SHarmonic1D &SHout)
size_t l0
Number of m harmonics.
valarray< double > f00
Array for isotropic component distribution function. Needed for calculating coefficients.
valarray< double > phdpm1
valarray< complex< double > > fc
Dummy array.
double mass
Array output by getslope.
collisions(const State1D &Yin, const double &deltat)
Constructors/Destructors.
void advanceflm(DistFunc1D &DF, valarray< double > &Zarray, DistFunc1D &DFh)
Advance flm_loop for 2D code.
valarray< double > vr
Define the velocity axis.
void reset_coeff(const valarray< double > &f00, double Zvalue, const double Delta_t)
Resets coefficients and integrals to use in the matrix solve.
Collisions - Declarations.
valarray< double > U4
Various coefficients for the integrals.
double G(const int &n, const valarray< double > &fin)
int szx
Total cells including boundary cells in x-direction.
vector< self_collisions > self_coll
valarray< double > p2dpm1
self_f00_implicit_collisions(const DistFunc1D &DFin, const double &deltat)
Constructors/Destructors.
void advanceflm(DistFunc1D &DF, valarray< double > &Zarray, DistFunc1D &DFh)
valarray< double > laser_Inv_Uav6
void advancef1(DistFunc1D &DF, valarray< double > &Zarray, DistFunc1D &DFh)
valarray< double > & Zarray() const
self_f00_RKfunctor(const size_t &nump, const double &pmax, const double &mass)
Constructor for RK4 method on f00.
self_collisions(const DistFunc1D &DFin, const double &deltat)
Constructors/Destructors.
void advance(State1D &Y, const Clock &W)
double update_D_Rosenbluth(const size_t &k, valarray< double > &fin, const double &delta)
self_flm_implicit_collisions self_flm_collisions
DistFunc1D & DF(size_t s)
Grid Setup - Declaration.
size_t m0
Number of m harmonics.
valarray< double > C_RB
Rosenbluth Potentials.
Fields, Distributions, Harmonics, States - Declarations.
self_f00_explicit_collisions(const DistFunc1D &DFin, const double &deltat)
Constructors/Destructors.
void advancef0(State1D &Y, const Clock &W, State1D &Yh)
self_f00_implicit_step collide
self_f00_explicit_step collide
void takestep(valarray< double > &fin, valarray< double > &fh, const double &Z0, const double &heating, const double &cooling)
void advance(valarray< complex< double > > &fin, const int el)
Perform a matrix solve to calculate effect of collisions on f >= 1.
valarray< T > MakeCAxis(const T min, const T max, const size_t N)
valarray< double > dtoverv2
bool IB_heating
Switches for inverse bremsstrahlung and maxwellian cooling.
void advancef1(State1D &Y, State1D &Yh)
Algorithms::RK4< valarray< double > > RK
int Nbc
Number of boundary cells in each direction.
valarray< double > J1
The integrals.
valarray< double > delta_CC
Chang-Cooper weighting delta.
self_flm_implicit_collisions(const DistFunc1D &DFin, const double &deltat)
Constructors/Destructors.
self_flm_implicit_step implicit_step
The object that is responsible for performing the algebra required for the integrals.
void parseprofile(const valarray< double > &grid, std::string &str_profile, valarray< double > &profile)
{ function_description }
self_flm_implicit_step(double pmax, size_t nump, double mass)
double calc_delta_ChangCooper(const size_t &k, const double &C, const double &D)
self_f00_implicit_step(const size_t &nump, const double &pmax, const double &_mass, const double &_deltat, bool &_ib)
valarray< double > Scattering_Term
Array2D< double > Alpha_Tri
self_f00_explicit_step(const size_t &nump, const double &pmax, const double &_mass)
Constructor that needs a distribution function input.
void advancef00(SHarmonic1D &f00, valarray< double > &Zarray, const double time, SHarmonic1D &f00h)
bool Gauss_Seidel(Array2D< double > &A, valarray< complex< double > > &b, valarray< complex< double > > &xk)
Performs Gauss-Seidel method on Ax = b.
void advancef1(DistFunc1D &DF, valarray< double > &Zarray, DistFunc1D &DFh)
Advance f1_loop for 2D code.
The 1D distribution function is the container for all SHarmonic1D per species.
void update_C_Rosenbluth(valarray< double > &fin)
valarray< double > heatingprofile
vector< self_collisions > self()
Numerical Methods - Declarations.