66 tempx(0.0,emf.Ex().numx()),
67 tempy(0.0,emf.Ex().numx()),
68 tempz(0.0,emf.Ex().numx()),
69 fourpioverthree(4.0*M_PI/3.0,0.0)
105 cout <<
"There is no such component for the current!" << endl;
139 complex<double> c01(0.0,1.0);
140 complex<double> pmin, pmax;
145 jayx =
static_cast<complex<double>
>(0.0);
146 jayy =
static_cast<complex<double>
>(0.0);
147 jayz =
static_cast<complex<double>
>(0.0);
150 for (
size_t s(0); s < Yin.
Species(); ++s){
152 for (
size_t ix(0); ix < Yin.
EMF().
Ex().
numx(); ++ix)
154 jayx(ix) +=
static_cast<complex<double>
>(current(0,ix));
155 jayy(ix) +=
static_cast<complex<double>
>(current(1,ix));
156 jayz(ix) +=
static_cast<complex<double>
>(current(2,ix));
199 cout <<
"There is no such component for the current!" << endl;
254 J_Ex(emf), J_Ey(emf), J_Ez(emf),
255 EN(emf), E0(emf), DE(emf),
258 idx(static_cast< complex<double> >(0.5/deltax))
274 int execution_attempt(0);
291 while ( (zeros_in_det > 0) && ( execution_attempt < 4) ) {
313 Yin = (*rk)(Yin,
dt, rkF, 1);
329 Yin.EMF().Ey() =
DE.
Ey();
330 Yin = (*rk)(Yin,
dt, rkF, 2);
347 Yin.EMF().Ez() =
DE.
Ez();
348 Yin = (*rk)(Yin,
dt, rkF, 3);
375 valarray< complex<double> > clm(3);
379 for (
size_t ix(0); ix <
szx; ++ix){
404 complex<double> D_sgm(
Det33(sgm) );
405 if ( abs( D_sgm.real() ) > 6.0*DBL_MIN ) {
432 if ( zeros_in_det > 0) {
433 cout <<
"WARNING, Det = 0 in "<<zeros_in_det <<
"locations" << endl;
434 if ( zeros_in_det > 8) { exit(1);}
455 double Eps(16.0*numeric_limits<double>::epsilon());
456 double LargeEps(sqrt(Eps));
464 for (
size_t ix(0); ix <
szx; ++ix){
472 DE.
Ex()(ix) *= LargeEps;
497 tmpJi *= (-1.0) *
idx;
Implicit_E_Field(EMF1D &emf, const double &deltat, const double &deltax)
void advance(Algorithms::RK3< State1D > *rk, State1D &Y, collisions &coll, VlasovFunctor1D_implicitE_p2 *rkF)
void calculate_J(State1D &Yin)
Underlying data structures.
complex< double > Detx33(valarray< complex< double >> &D, Array2D< complex< double >> &A)
complex< double > Detz33(valarray< complex< double >> &D, Array2D< complex< double >> &A)
Collisions - Declarations.
Functors for various time-integration methodds - Declarations.
Field1D & E(int component)
DistFunc1D & DF(size_t s)
complex< double > Det33(Array2D< complex< double >> &A)
Field1D & J(int component)
Fields, Distributions, Harmonics, States - Declarations.
void advancef1(State1D &Y, State1D &Yh)
complex< double > Dety33(valarray< complex< double >> &D, Array2D< complex< double >> &A)
valarray< double > getcurrent(size_t dir)
virtual ~Efield_Method()=0
Numerical Methods - Declarations.