OSHUN  beta
Arbitrary Order Spherical-Harmonic 1D-3P Vlasov-Fokker-Planck-Maxwell code
state.h
Go to the documentation of this file.
1 
40 //-------------------------------------------------------------------
41 
42 #ifndef DECL_STATE_H
43 #define DECL_STATE_H
44 
48 //-------------------------------------------------------------------
49 //-------------------------------------------------------------------
57 class SHarmonic1D {
58 //-------------------------------------------------------------------
59 private:
61 
62 public:
64  SHarmonic1D(size_t nump, size_t numx);
65  SHarmonic1D(const SHarmonic1D& other);
66  ~SHarmonic1D();
67 
69  Array2D<complex<double> >& array() const {return (*sh);}
70  size_t dim() const {return (*sh).dim();} //< Total number of values in the array
71  size_t nump() const {return (*sh).dim1();} //< Number of momentum cells
72  size_t numx() const {return (*sh).dim2();} //< Number of spatial cells
73 
74 // Access to the underlying array
75  complex<double> & operator()(size_t i, size_t j) {return (*sh)(i,j);}
76  complex<double> operator()(size_t i, size_t j) const {return (*sh)(i,j);}
77  complex<double> & operator()(size_t i) {return (*sh)(i);} //1D-style
78  complex<double> operator()(size_t i) const {return (*sh)(i);} //1D-style
79 
80  vector<complex<double> > xVec(size_t j) const {return (*sh).d2c(j);} //1D-style
81 
82 // Operators
83  SHarmonic1D& operator=(const complex<double> & d);
84  SHarmonic1D& operator=(const SHarmonic1D& other);
85  SHarmonic1D& operator*=(const complex<double> & d);
86  SHarmonic1D& operator*=(const SHarmonic1D& shmulti);
87  SHarmonic1D& operator+=(const complex<double> & d);
88  SHarmonic1D& operator+=(const SHarmonic1D& shadd);
89  SHarmonic1D& operator-=(const complex<double> & d);
90  SHarmonic1D& operator-=(const SHarmonic1D& shmin);
91 
92 // Other Algebra
93  SHarmonic1D& mpaxis(const valarray<complex<double> >& shmulti);
94  SHarmonic1D& mxaxis(const valarray<complex<double> >& shmulti);
95  SHarmonic1D& Re();
96 
97 // Derivatives
98  SHarmonic1D& Dp();
99  SHarmonic1D& Dx();
100 
101 // FilterP
102  SHarmonic1D& Filterp(size_t N);
103 
104 
105 // Debug
106  void checknan();
107 };
108 //--------------------------------------------------------------
114 //-------------------------------------------------------------------
122 class SHarmonic2D {
123 //--------------------------------------------------------------
124 private:
126 
127 public:
128 // Constructors/Destructors
129  SHarmonic2D(size_t nump, size_t numx, size_t numy);
130  SHarmonic2D(const SHarmonic2D& other);
131  ~SHarmonic2D();
132 
133 // Basic information
134  Array3D < complex <double> >& array() const {return (*sh);}
135  size_t dim() const {return (*sh).dim();}
136  size_t nump() const {return (*sh).dim1();}
137  size_t numx() const {return (*sh).dim2();}
138  size_t numy() const {return (*sh).dim3();}
139 
140 // Access to the underlying array
141  complex<double>& operator()(size_t i, size_t j, size_t k) {return (*sh)(i,j,k);}
142  complex<double>& operator()(size_t i) {return (*sh)(i);} //1D-style
143 
144  // vector<double> xVec(size_t j) const {return (*sh).d2c(j);} //1D-style
145 
146 // Operators
147  SHarmonic2D& operator=(const complex<double>& d);
148  SHarmonic2D& operator=(const SHarmonic2D& other);
149  SHarmonic2D& operator*=(const complex<double>& d);
150  SHarmonic2D& operator*=(const SHarmonic2D& shmulti);
151  SHarmonic2D& operator+=(const complex<double>& d);
152  SHarmonic2D& operator+=(const SHarmonic2D& shadd);
153  SHarmonic2D& operator-=(const complex<double>& d);
154  SHarmonic2D& operator-=(const SHarmonic2D& shmin);
155 
156 // Other Algebra
157  SHarmonic2D& mpaxis(const valarray <complex <double> >& shmulti);
158  SHarmonic2D& mxaxis(const valarray <complex <double> >& shmulti);
159  SHarmonic2D& myaxis(const valarray <complex <double> >& shmulti);
160  SHarmonic2D& mxy_matrix(Array2D <complex <double> >& shmultiM);
161 
162 
163 // Derivatives
164  // SHarmonic2D& Dp();
165  SHarmonic2D& Dx();
166  SHarmonic2D& Dy();
167 
168 // FilterP
169  SHarmonic2D& Filterp(size_t N);
170 };
171 //--------------------------------------------------------------
177 //-------------------------------------------------------------------
184 class Field1D {
185 //-------------------------------------------------------------------
186 private:
187  valarray<complex<double> > *fi;
188 
189 public:
190 // Constructors/Destructors
191  Field1D(size_t numx);
192  Field1D(const Field1D& other);
193  ~Field1D();
194 
195 // Access to the underlying matrix
196  valarray<complex<double> >& array() const {return (*fi);}
197  size_t numx() const {return (*fi).size();}
198  complex<double> & operator()(size_t i){ return (*fi)[i];} //1D-style
199  complex<double> operator()(size_t i) const {return (*fi)[i];}
200 
201 // Operators
202  Field1D& operator=(const complex<double> & d);
203  Field1D& operator=(const valarray<complex<double> >& other);
204  Field1D& operator=(const Field1D& other);
205  Field1D& operator*=(const complex<double> & d);
206  Field1D& operator*=(const valarray<complex<double> >& fimulti);
207  Field1D& operator*=(const Field1D& fimulti);
208  Field1D& operator+=(const complex<double> & d);
209  Field1D& operator+=(const Field1D& fiadd);
210  Field1D& operator-=(const complex<double> & d);
211  Field1D& operator-=(const Field1D& fimin);
212 
213 // Other Algebra
214  Field1D& Re();
215 
216 // Derivatives
217  Field1D& Dx();
218 };
219 //-------------------------------------------------------------------
226 //-------------------------------------------------------------------
233 class Field2D {
234 //-------------------------------------------------------------------
235 private:
237 
238 public:
239 // Constructors/Destructors
240  Field2D(size_t numx, size_t numy);
241  Field2D(const Field2D& other);
242  ~Field2D();
243 
244 // Access to the underlying matrix
245  Array2D < complex <double> >& array() const {return (*fi);}
246  size_t numx() const {return (*fi).dim1();}
247  size_t numy() const {return (*fi).dim2();}
248  complex<double>& operator()(size_t i, size_t j){return (*fi)(i,j);} //Fortran-style
249  complex<double>& operator()(size_t i){return (*fi)(i);} //1D-style
250 
251 // Operators
252  Field2D& operator=(const complex<double>& d);
253  // Field2D& operator=(const Array2D< complex <double> >& other);
254  Field2D& operator=(const Field2D& other);
255  Field2D& operator*=(const complex<double>& d);
256  // Field2D& operator*=(const Array2D< complex <double> >& fimulti);
257  Field2D& operator*=(const Field2D& fimulti);
258  Field2D& operator+=(const complex<double>& d);
259  Field2D& operator+=(const Field2D& fiadd);
260  Field2D& operator-=(const complex<double>& d);
261  Field2D& operator-=(const Field2D& fimin);
262 
263 // Derivatives
264  Field2D& Dx();
265  Field2D& Dy();
266 };
267 //--------------------------------------------------------------
268 
269 //**************************************************************
270 //--------------------------------------------------------------
271 class EMF1D {
272 //--------------------------------------------------------------
273 // Electromagnetic fields decleration
274 //--------------------------------------------------------------
275 
276 private:
277  vector<Field1D> *fie;
278 
279 public:
280 // Constructors/Destructors
281  EMF1D(size_t nx);
282  EMF1D(const EMF1D& other);
283  ~EMF1D();
284 
285 // Access
286  size_t dim() const {return (*fie).size();}
287  Field1D& operator()(size_t i) {return (*fie)[i];}
288  Field1D operator()(size_t i) const {return (*fie)[i];}
289 
290  Field1D& Ex() {return (*fie)[0];}
291  Field1D& Ey() {return (*fie)[1];}
292  Field1D& Ez() {return (*fie)[2];}
293  Field1D& Bx() {return (*fie)[3];}
294  Field1D& By() {return (*fie)[4];}
295  Field1D& Bz() {return (*fie)[5];}
296 
297 // Operators
298  EMF1D& operator=(const complex<double>& d);
299  EMF1D& operator=(const Field1D& h);
300  EMF1D& operator=(const EMF1D& other);
301  EMF1D& operator*=(const complex<double>& d);
302  EMF1D& operator*=(const EMF1D& other);
303  EMF1D& operator+=(const complex<double>& d);
304  EMF1D& operator+=(const EMF1D& other);
305  EMF1D& operator-=(const complex<double>& d);
306  EMF1D& operator-=(const EMF1D& other);
307 
308 };
309 //--------------------------------------------------------------
310 
311 
312 //--------------------------------------------------------------
318 //-------------------------------------------------------------------
326 class EMF2D {
327 //-------------------------------------------------------------------
328 private:
329  vector<Field2D> *fie;
330 
331 public:
332 // Constructors/Destructors
333  EMF2D(size_t nx, size_t ny);
334  EMF2D(const EMF2D& other);
335  ~EMF2D();
336 
337 // Access
338  size_t dim() const {return (*fie).size();}
339  Field2D& operator()(size_t i) {return (*fie)[i];}
340  Field2D operator()(size_t i) const {return (*fie)[i];}
341 
342  Field2D& Ex() {return (*fie)[0];}
343  Field2D& Ey() {return (*fie)[1];}
344  Field2D& Ez() {return (*fie)[2];}
345  Field2D& Bx() {return (*fie)[3];}
346  Field2D& By() {return (*fie)[4];}
347  Field2D& Bz() {return (*fie)[5];}
348 
349 // Operators
350  EMF2D& operator=(const complex<double>& d);
351  EMF2D& operator=(const Field2D& h);
352  EMF2D& operator=(const EMF2D& other);
353  EMF2D& operator*=(const complex<double>& d);
354  EMF2D& operator*=(const EMF2D& other);
355  EMF2D& operator+=(const complex<double>& d);
356  EMF2D& operator+=(const EMF2D& other);
357  EMF2D& operator-=(const complex<double>& d);
358  EMF2D& operator-=(const EMF2D& other);
359 
360 };
361 //--------------------------------------------------------------
367 //-------------------------------------------------------------------
376 class DistFunc1D {
377 //-------------------------------------------------------------------
378 private:
379 
380  vector<SHarmonic1D> *df;
381  size_t lmax, mmax, sz;
382  double pmx, charge, ma;
383 
385  valarray<int> filter_ceiling;
386 
387 public:
388 
389 // Constructors/Destructors
390  DistFunc1D(size_t l, size_t m, size_t np, double pma, size_t nx, double q, double _ma);
391  DistFunc1D(const DistFunc1D& other);
392  ~DistFunc1D();
393 
394 // Basic info
395  size_t dim() const {return sz;}
396  size_t l0() const {return lmax; }
397  size_t m0() const {return mmax; }
398  double pmax() const {return pmx; }
399  double q() const {return charge;}
400  double mass() const {return ma; }
401 
402  Array2D<int> indx() const {return ind;}
403 
404  valarray<double> getdensity();
405  valarray<double> getcurrent(size_t dir);
406  valarray<double> getcurrent(size_t dir) const;
407  Array2D<double> getcurrent() const;
408  valarray<double> getpressure();
409 
410 // Access
411  SHarmonic1D& operator()(int i); // Returns the address of a harmonic, NULL if out-of-bounds
412  SHarmonic1D& operator()(int i) const;
413  SHarmonic1D& operator()(size_t l, size_t m);
414  SHarmonic1D& operator()(size_t l, size_t m) const; // Returns the address of a harmonic, NULL if out-of-bounds
415 
416 // Operators
417  DistFunc1D& operator=(const complex<double> & d);
418  DistFunc1D& operator=(const SHarmonic1D& h);
419  DistFunc1D& operator=(const DistFunc1D& other);
420  DistFunc1D& operator*=(const complex<double> & d);
421  DistFunc1D& operator*=(const DistFunc1D& other);
422  DistFunc1D& operator+=(const complex<double> & d);
423  DistFunc1D& operator+=(const DistFunc1D& other);
424  DistFunc1D& operator-=(const complex<double> & d);
425  DistFunc1D& operator-=(const DistFunc1D& other);
426 
427 // Filter
428  DistFunc1D& Filterp();
429 
430 // Debug
431  void checknan();
432 };
433 //--------------------------------------------------------------------------------
440 //--------------------------------------------------------------------------------
449 class DistFunc2D {
450 //--------------------------------------------------------------------------------
451 private:
452  vector<SHarmonic2D> *df;
453  size_t lmax, mmax, sz;
454  double charge, ma;
455 
456 // Index for "trapezoid matrix"
458  Array2D<int> indx() const {return ind;}
459 
460 public:
461 
462 // Constructors/Destructors
463  DistFunc2D(size_t l, size_t m, size_t np, size_t nx, size_t ny, double q, double _ma);
464  DistFunc2D(const DistFunc2D& other);
465  ~DistFunc2D();
466 
467 // Basic info
468  size_t dim() const {return sz;}
469  size_t ldim() const {return lmax+1;}
470  size_t mdim() const {return mmax+1;}
471  size_t l0() const {return lmax; }
472  size_t m0() const {return mmax; }
473  double q() const {return charge;}
474  double mass() const {return ma;}
475 
476 // Access
477  SHarmonic2D* operator()(size_t i); //{return &(*df)[i];}
478  SHarmonic2D* operator()(size_t i) const; // const {return &(*df)[i];}
479  SHarmonic2D* operator()(size_t l, size_t m) {return &(*df)[ind(l,m)];}
480  SHarmonic2D* operator()(size_t l, size_t m) const {return &(*df)[ind(l,m)];} // Returns the address of a harmonic, NULL if out-of-bounds
481 
482 // Operators
483  DistFunc2D& operator=(const complex <double>& d);
484  DistFunc2D& operator=(const SHarmonic2D& h);
485  DistFunc2D& operator=(const DistFunc2D& other);
486  DistFunc2D& operator*=(const complex <double>& d);
487  DistFunc2D& operator*=(const DistFunc2D& other);
488  DistFunc2D& operator+=(const complex <double>& d);
489  DistFunc2D& operator+=(const DistFunc2D& other);
490  DistFunc2D& operator-=(const complex <double>& d);
491  DistFunc2D& operator-=(const DistFunc2D& other);
492 
493 // Filter
494  // DistFunc2D& Filterp();
495 };
496 //--------------------------------------------------------------
500 //-------------------------------------------------------------------
507 class Hydro1D {
508 //-------------------------------------------------------------------
509 private:
510  valarray<double> *hn, *hvx, *hvy, *hvz, *ht, *hz;
511 
512  double hydromass, hydrocharge;
513 
514 public:
515 // Constructors/Destructors
516  Hydro1D(size_t numx, double _mass, double _charge);
517  Hydro1D(const Hydro1D& other);
518  ~Hydro1D();
519 
520 // Access to the underlying matrix
521  // valarray<complex<double> >& array() const {return (*fi);}
522  size_t numx() const {return (*hn).size();}
523  double mass() const {return hydromass;}
524  double charge() const {return hydrocharge;}
525 
526  // void Dx_vel(valarray<complex<double>>& vin);
527  double & density(size_t i){ return (*hn)[i];} //1D-style
528  double density(size_t i) const {return (*hn)[i];}
529 
530  double & vx(size_t i){ return (*hvx)[i];}
531  double vx(size_t i) const {return (*hvx)[i];}
532 
533  double & vy(size_t i){ return (*hvy)[i];}
534  double vy(size_t i) const {return (*hvy)[i];}
535 
536  double & vz(size_t i){ return (*hvz)[i];}
537  double vz(size_t i) const {return (*hvz)[i];}
538 
539  double & temperature(size_t i){ return (*ht)[i];} //1D-style
540  double temperature(size_t i) const {return (*ht)[i];}
541 
542  double & Z(size_t i){ return (*hz)[i];} //1D-style
543  double Z(size_t i) const {return (*hz)[i];}
544 
545  valarray<double >& densityarray() const {return (*hn);}
546  valarray<double >& vxarray() const {return (*hvx);}
547  valarray<double >& vyarray() const {return (*hvy);}
548  valarray<double >& vzarray() const {return (*hvz);}
549  valarray<double >& temperaturearray() const {return (*ht);}
550  valarray<double >& Zarray() const {return (*hz);}
551 
552 // Operators
553  Hydro1D& operator=(const double & d);
554  Hydro1D& operator=(const valarray<double >& other);
555  Hydro1D& operator=(const Hydro1D& other);
556 
557  Hydro1D& operator*=(const double & d);
558  Hydro1D& operator*=(const valarray<double >& other);
559  Hydro1D& operator*=(const Hydro1D& other);
560 
561  Hydro1D& operator+=(const double & d);
562  Hydro1D& operator+=(const valarray<double >& other);
563  Hydro1D& operator+=(const Hydro1D& other);
564 
565  Hydro1D& operator-=(const double & d);
566  Hydro1D& operator-=(const valarray<double >& other);
567  Hydro1D& operator-=(const Hydro1D& other);
568 
569 };
570 
574 //--------------------------------------------------------------
575 // Collection of fields and distribution functions decleration
576 //--------------------------------------------------------------
577 class State1D {
578 private:
579  vector<DistFunc1D> *sp;
582 
583  // valarray<complex<double>> *_hydrovelocity, *_hydrotemperature;
584  // valarray<complex<double>> *_kineticspeciespressure, *_magneticpressure;
585 
586  size_t ns;
587 
588 
589 public:
590 // Constructors/Destructors
591  State1D(size_t nx, vector<size_t> l0, vector<size_t> m0, vector<size_t> np, vector<double> pmax, vector<double> q, vector<double> ma, double hydromass, double hydrocharge);
592  State1D(const State1D& other);
593  ~State1D();
594 
595 // Basic information
596  size_t Species() const {return ns;}
597  size_t Fields() const {return 6;}
598  void checknan();
599 
600 // Access to underlying structures
601 // Distributions
602  DistFunc1D& DF(size_t s) {return (*sp)[s];}
603  DistFunc1D& DF(size_t s) const {return (*sp)[s];}
604 // Individual Harmonics
605  SHarmonic1D& SH(size_t s, size_t lh, size_t mh) {return ((*sp)[s])(lh,mh);} // Reference to spherical harmonic
606  SHarmonic1D& SH(size_t s, size_t lh, size_t mh) const {return ((*sp)[s])(lh,mh);}
607 // SHarmonic1D* SHp(size_t s, size_t lh, size_t mh) {return (sp[s])(lh,mh); } // Pointer to spherical harmonic
608 // SHarmonic1D* SHp(size_t s, size_t lh, size_t mh) const {return (sp[s])(lh,mh); }
609 // Fields
610  EMF1D& EMF() const {return (*flds);}
611  Field1D& FLD(size_t ip) const {return (*flds)(ip);}
612 // Hydro
613  Hydro1D& HYDRO() {return (*hydro);}
614  Hydro1D& HYDRO() const {return (*hydro);}
615 
616 
617 // Copy assignment Operator
618  State1D& operator=(const State1D& other);
619  State1D& operator=(const complex<double> & d);
620  State1D& operator*=(const State1D& other);
621  State1D& operator*=(const complex<double> & d);
622  State1D& operator+=(const State1D& other);
623  State1D& operator+=(const complex<double> & d);
624  State1D& operator-=(const State1D& other);
625  State1D& operator-=(const complex<double> & d);
626 
627 };
628 //--------------------------------------------------------------
634 //--------------------------------------------------------------
635 // Collection of fields and distribution functions decleration
636 //--------------------------------------------------------------
637 class State2D {
638 private:
639  vector<DistFunc2D> *sp;
641 
642  size_t ns;
643 
644 public:
645 // Constructors/Destructors
646  State2D(size_t nx, size_t ny, vector<size_t> l0, vector<size_t> m0, vector<size_t> np, vector<double> q, vector<double> ma);
647  State2D(const State2D& other);
648  ~State2D();
649 
650 // Basic information
651  size_t Species() const {return ns;}
652  size_t Fields() const {return 6;}
653 
654 // Access to underlying structures
655 // Distributions
656  DistFunc2D& DF(size_t s) {return (*sp)[s];}
657  DistFunc2D& DF(size_t s) const {return (*sp)[s];}
658 // Individual Harmonics
659  SHarmonic2D& SH(size_t s, size_t lh, size_t mh) {return *(((*sp)[s])(lh,mh));} // Reference to spherical harmonic
660  SHarmonic2D& SH(size_t s, size_t lh, size_t mh) const {return *(((*sp)[s])(lh,mh));}
661  SHarmonic2D* SHp(size_t s, size_t lh, size_t mh) {return ((*sp)[s])(lh,mh); } // Pointer to spherical harmonic
662  SHarmonic2D* SHp(size_t s, size_t lh, size_t mh) const {return ((*sp)[s])(lh,mh); }
663 // Fields
664  EMF2D& EMF() const {return (*flds);}
665  Field2D& FLD(size_t ip) const {return (*flds)(ip);}
666 
667 // Copy assignment Operator
668  State2D& operator=(const State2D& other);
669  State2D& operator=(const complex<double>& d);
670  State2D& operator*=(const State2D& other);
671  State2D& operator*=(const complex<double>& d);
672  State2D& operator+=(const State2D& other);
673  State2D& operator+=(const complex<double>& d);
674  State2D& operator-=(const State2D& other);
675  State2D& operator-=(const complex<double>& d);
676 };
677 // --------------------------------------------------------------
678 
679 
680 #endif
size_t ns
Definition: state.h:642
valarray< double > & temperaturearray() const
Definition: state.h:549
size_t numx() const
Definition: state.h:197
EMF2D & EMF() const
Definition: state.h:664
Field1D & By()
Definition: state.h:294
double vz(size_t i) const
Definition: state.h:537
Field2D & By()
Definition: state.h:346
vector< DistFunc2D > * sp
Definition: state.h:639
A 1D Field.
Definition: state.h:184
A 2D Field.
Definition: state.h:233
SHarmonic1D & SH(size_t s, size_t lh, size_t mh) const
Definition: state.h:606
size_t dim() const
Definition: state.h:468
Field2D & operator()(size_t i)
Definition: state.h:339
A Collection of relevant 1D Hydrodynamic Quantities.
Definition: state.h:507
size_t ldim() const
Definition: state.h:469
size_t nump() const
Definition: state.h:136
Array3D< complex< double > > * sh
Definition: state.h:125
size_t Species() const
Definition: state.h:651
Array2D< complex< double > > * fi
Definition: state.h:236
SHarmonic2D * operator()(size_t l, size_t m) const
Definition: state.h:480
double density(size_t i) const
Definition: state.h:528
complex< double > & operator()(size_t i, size_t j)
Definition: state.h:75
double mass() const
Definition: state.h:400
size_t numx() const
Definition: state.h:522
double ma
Definition: state.h:454
size_t numy() const
Definition: state.h:138
Field2D & Bz()
Definition: state.h:347
DistFunc2D & DF(size_t s)
Definition: state.h:656
double pmx
Definition: state.h:382
Field2D & Ex()
Definition: state.h:342
complex< double > & operator()(size_t i)
Definition: state.h:77
Hydro1D & HYDRO() const
Definition: state.h:614
complex< double > operator()(size_t i) const
Definition: state.h:78
Array2D< int > indx() const
Definition: state.h:458
SHarmonic1D & mxaxis(const valarray< complex< double > > &shmulti)
Definition: state.cpp:126
Field2D & Ez()
Definition: state.h:344
Array2D< complex< double > > * sh
Definition: state.h:60
Array2D< complex< double > > & array() const
Definition: state.h:245
EMF1D * flds
Definition: state.h:580
size_t dim() const
Definition: state.h:286
void checknan()
Definition: state.cpp:218
double & vz(size_t i)
Definition: state.h:536
double vx(size_t i) const
Definition: state.h:531
SHarmonic1D & Re()
Definition: state.cpp:130
size_t numx() const
Definition: state.h:72
size_t dim() const
Definition: state.h:395
Field1D & Ez()
Definition: state.h:292
~SHarmonic1D()
Definition: state.cpp:72
double hydromass
Definition: state.h:512
complex< double > operator()(size_t i) const
Definition: state.h:199
size_t sz
Definition: state.h:381
complex< double > & operator()(size_t i)
Definition: state.h:249
size_t dim() const
Definition: state.h:135
A 2D Spherical Harmonic.
Definition: state.h:122
A 1D Spherical Harmonic.
Definition: state.h:57
double vy(size_t i) const
Definition: state.h:534
DistFunc2D & DF(size_t s) const
Definition: state.h:657
SHarmonic1D & Dp()
Definition: state.cpp:139
valarray< complex< double > > & array() const
Definition: state.h:196
Field1D & operator()(size_t i)
Definition: state.h:287
size_t dim() const
Definition: state.h:70
SHarmonic1D(size_t nump, size_t numx)
The constructor requires nump, and numx as inputs.
Definition: state.cpp:63
valarray< double > & vyarray() const
Definition: state.h:547
Definition: state.h:577
Definition: state.h:637
double pmax() const
Definition: state.h:398
Array3D< complex< double > > & array() const
Definition: state.h:134
Field1D & Bx()
Definition: state.h:293
SHarmonic2D & SH(size_t s, size_t lh, size_t mh) const
Definition: state.h:660
SHarmonic1D & operator+=(const complex< double > &d)
Definition: state.cpp:101
valarray< double > & Zarray() const
Definition: state.h:550
Hydro1D & HYDRO()
Definition: state.h:613
double & temperature(size_t i)
Definition: state.h:539
double & Z(size_t i)
Definition: state.h:542
SHarmonic2D * SHp(size_t s, size_t lh, size_t mh)
Definition: state.h:661
size_t m0() const
Definition: state.h:472
vector< Field1D > * fie
Definition: state.h:277
SHarmonic2D & SH(size_t s, size_t lh, size_t mh)
Definition: state.h:659
size_t nump() const
Definition: state.h:71
vector< SHarmonic1D > * df
Definition: state.h:380
double mass() const
Definition: state.h:523
Field1D operator()(size_t i) const
Definition: state.h:288
size_t m0() const
Definition: state.h:397
double q() const
Definition: state.h:399
valarray< complex< double > > * fi
Definition: state.h:187
EMF2D * flds
Definition: state.h:640
Field2D & FLD(size_t ip) const
Definition: state.h:665
Field1D & Bz()
Definition: state.h:295
double q() const
Definition: state.h:473
DistFunc1D & DF(size_t s)
Definition: state.h:602
SHarmonic2D * SHp(size_t s, size_t lh, size_t mh) const
Definition: state.h:662
SHarmonic1D & SH(size_t s, size_t lh, size_t mh)
Definition: state.h:605
Array2D< int > ind
Definition: state.h:457
Field2D operator()(size_t i) const
Definition: state.h:340
complex< double > operator()(size_t i, size_t j) const
Definition: state.h:76
complex< double > & operator()(size_t i, size_t j, size_t k)
Definition: state.h:141
size_t numx() const
Definition: state.h:137
size_t l0() const
Definition: state.h:471
Field1D & Ex()
Definition: state.h:290
valarray< double > * hz
Definition: state.h:510
valarray< double > & densityarray() const
Definition: state.h:545
size_t Fields() const
Definition: state.h:597
valarray< double > & vzarray() const
Definition: state.h:548
Definition: state.h:271
vector< complex< double > > xVec(size_t j) const
Definition: state.h:80
size_t Fields() const
Definition: state.h:652
An EMF2D is the container for the 6 EM fields in a 2D-3P code.
Definition: state.h:326
double & vx(size_t i)
Definition: state.h:530
size_t numy() const
Definition: state.h:247
Field2D & Ey()
Definition: state.h:343
Array2D< complex< double > > & array() const
To retrieve the the array that stores the information.
Definition: state.h:69
size_t ns
Definition: state.h:586
Array2D< int > indx() const
Definition: state.h:402
SHarmonic1D & Dx()
Definition: state.cpp:185
Field1D & FLD(size_t ip) const
Definition: state.h:611
double & density(size_t i)
Definition: state.h:527
Field1D & Ey()
Definition: state.h:291
size_t dim() const
Definition: state.h:338
Hydro1D * hydro
Definition: state.h:581
size_t l0() const
Definition: state.h:396
double & vy(size_t i)
Definition: state.h:533
size_t mdim() const
Definition: state.h:470
vector< Field2D > * fie
Definition: state.h:329
SHarmonic1D & operator*=(const complex< double > &d)
Definition: state.cpp:92
valarray< double > & vxarray() const
Definition: state.h:546
SHarmonic1D & Filterp(size_t N)
Definition: state.cpp:212
vector< SHarmonic2D > * df
Definition: state.h:452
size_t sz
Definition: state.h:453
SHarmonic1D & operator-=(const complex< double > &d)
Definition: state.cpp:110
SHarmonic1D & operator=(const complex< double > &d)
Definition: state.cpp:81
complex< double > & operator()(size_t i)
Definition: state.h:142
DistFunc1D & DF(size_t s) const
Definition: state.h:603
Array2D< int > ind
Definition: state.h:384
complex< double > & operator()(size_t i)
Definition: state.h:198
vector< DistFunc1D > * sp
Definition: state.h:579
size_t Species() const
Definition: state.h:596
Field2D & Bx()
Definition: state.h:345
double Z(size_t i) const
Definition: state.h:543
valarray< int > filter_ceiling
Definition: state.h:385
double charge() const
Definition: state.h:524
SHarmonic2D * operator()(size_t l, size_t m)
Definition: state.h:479
The 1D distribution function is the container for all SHarmonic1D per species.
Definition: state.h:376
double mass() const
Definition: state.h:474
The 2D distribution function is the container for all SHarmonic2D per species.
Definition: state.h:449
double temperature(size_t i) const
Definition: state.h:540
EMF1D & EMF() const
Definition: state.h:610
complex< double > & operator()(size_t i, size_t j)
Definition: state.h:248
size_t numx() const
Definition: state.h:246
SHarmonic1D & mpaxis(const valarray< complex< double > > &shmulti)
Definition: state.cpp:122