OSHUN  beta
Arbitrary Order Spherical-Harmonic 1D-3P Vlasov-Fokker-Planck-Maxwell code
Fluid_Equation_1D Class Reference

#include <fluid.h>

Public Member Functions

 Fluid_Equation_1D (double xmin, double xmax, size_t Nx)
 Constructors/Destructors. More...
 
void density (const Hydro1D &Hin, Hydro1D &Hslope)
 Momentum (and Energy and Density?) Update. More...
 
void chargefraction (const Hydro1D &Hin, Hydro1D &Hslope)
 
void velocity (const State1D &Yin, Hydro1D &Hslope, valarray< double > &electrondensity, valarray< double > &electronpressure, Array2D< double > &electroncurrent)
 
void updateE (Hydro1D &HYDRO, EMF1D &EMF)
 Electric Field Update. More...
 

Private Attributes

double idx
 Evaluate Quantities from Distribution Functions. More...
 
size_t szx
 
size_t Nbc
 
valarray< double > dummy
 

Detailed Description

Definition at line 5 of file fluid.h.

Constructor & Destructor Documentation

◆ Fluid_Equation_1D()

Fluid_Equation_1D::Fluid_Equation_1D ( double  xmin,
double  xmax,
size_t  Nx 
)

Constructors/Destructors.

Definition at line 65 of file fluid.cpp.

References Input::Input_List::BoundaryCells, Input::List(), and Nbc.

66  : idx(Nx/(xmax-xmin)), szx(Nx), dummy(0.0,Nx)
67  {
69 
70  }
double idx
Evaluate Quantities from Distribution Functions.
Definition: fluid.h:31
size_t Nbc
Definition: fluid.h:32
Input_List & List()
Definition: input.cpp:1585
size_t szx
Definition: fluid.h:32
valarray< double > dummy
Definition: fluid.h:34
int BoundaryCells
Definition: input.h:50
Here is the call graph for this function:

Member Function Documentation

◆ chargefraction()

void Fluid_Equation_1D::chargefraction ( const Hydro1D Hin,
Hydro1D Hslope 
)

Definition at line 93 of file fluid.cpp.

References Hydro1D::densityarray(), df_4thorder(), idx, szx, and Hydro1D::Z().

Referenced by Hydro_Functor::operator()().

93  {
94  valarray<double> d_nZx(Hin.densityarray());
95  for (size_t ix(0);ix<szx;++ix)
96  d_nZx[ix] = d_nZx[ix] * Hin.Z(ix);
97 
98  d_nZx = df_4thorder(d_nZx);
99 
100  Hslope.Z(0) -= idx * d_nZx[0];
101 
102  for (size_t ix(1);ix<szx-1;++ix)
103  {
104  Hslope.Z(ix) -= idx * d_nZx[ix];
105  }
106 
107  Hslope.Z(szx - 1) -= idx * d_nZx[szx-1];
108 
109 }
valarray< double > df_4thorder(const valarray< double > &f)
Definition: nmethods.cpp:421
double idx
Evaluate Quantities from Distribution Functions.
Definition: fluid.h:31
double & Z(size_t i)
Definition: state.h:542
valarray< double > & densityarray() const
Definition: state.h:545
size_t szx
Definition: fluid.h:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ density()

void Fluid_Equation_1D::density ( const Hydro1D Hin,
Hydro1D Hslope 
)

Momentum (and Energy and Density?) Update.

Definition at line 74 of file fluid.cpp.

References Hydro1D::density(), Hydro1D::densityarray(), df_4thorder(), idx, szx, and Hydro1D::vx().

Referenced by Hydro_Functor::operator()().

74  {
75  valarray<double> d_nvx(Hin.densityarray());
76  for (size_t ix(0);ix<szx;++ix)
77  d_nvx[ix] = d_nvx[ix] * Hin.vx(ix);
78 
79  d_nvx = df_4thorder(d_nvx);
80 
81  Hslope.density(0) -= idx * d_nvx[0];
82 
83  for (size_t ix(1);ix<szx-1;++ix)
84  {
85  Hslope.density(ix) -= idx * d_nvx[ix];
86  }
87 
88  Hslope.density(szx - 1) -= idx * d_nvx[szx-1];
89 
90 }
valarray< double > df_4thorder(const valarray< double > &f)
Definition: nmethods.cpp:421
double idx
Evaluate Quantities from Distribution Functions.
Definition: fluid.h:31
valarray< double > & densityarray() const
Definition: state.h:545
double & vx(size_t i)
Definition: state.h:530
double & density(size_t i)
Definition: state.h:527
size_t szx
Definition: fluid.h:32
Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateE()

void Fluid_Equation_1D::updateE ( Hydro1D HYDRO,
EMF1D EMF 
)

Electric Field Update.

Definition at line 215 of file fluid.cpp.

References szx.

Referenced by Hydro_Functor::operator()().

216  {
217 
218 
219 
220 
221 
222  for (size_t ix(0);ix<szx;++ix){
223  // EMF.Ex()(ix) -= 0.0;//dCdt[ix]; //+0.5*dC2xdx[ix]+(hydrocharge*electrondensity[ix]-hydrodensity[ix]); // Needs JxB in 2D
224  // EMF.Ey()(ix) += -1.0*HYDRO.Z(ix)*HYDRO.charge()*HYDRO.vx(ix)*EMF.Bz()(ix);//+jx[ix]*Bz(ix)-jz[ix]*Bx(ix);
225  // EMF.Ez()(ix) += HYDRO.Z(ix)*HYDRO.charge()*HYDRO.vx(ix)*EMF.By()(ix);//-jx[ix]*By(ix)-jy[ix]*Bx(ix);
226 
227  // EMF.Ex()(ix) += HYDRO.Z(ix)*HYDRO.charge()*HYDRO.vx(ix)*HYDRO.density(ix);
228  // EMF.Ey()(ix) += HYDRO.Z(ix)*HYDRO.charge()*HYDRO.vy(ix)*HYDRO.density(ix);
229  // EMF.Ez()(ix) += HYDRO.Z(ix)*HYDRO.charge()*HYDRO.vz(ix)*HYDRO.density(ix);
230  }
231 }
size_t szx
Definition: fluid.h:32
Here is the caller graph for this function:

◆ velocity()

void Fluid_Equation_1D::velocity ( const State1D Yin,
Hydro1D Hslope,
valarray< double > &  electrondensity,
valarray< double > &  electronpressure,
Array2D< double > &  electroncurrent 
)

Momentum equation - y direction


Momentum equation - z direction

Definition at line 112 of file fluid.cpp.

References EMF1D::Bx(), EMF1D::By(), EMF1D::Bz(), Hydro1D::charge(), Hydro1D::density(), Hydro1D::densityarray(), df_4thorder(), State1D::EMF(), EMF1D::Ex(), EMF1D::Ey(), EMF1D::Ez(), State1D::HYDRO(), idx, Hydro1D::mass(), szx, Hydro1D::temperature(), Hydro1D::vx(), Hydro1D::vxarray(), Hydro1D::vy(), Hydro1D::vz(), and Hydro1D::Z().

Referenced by Hydro_Functor::operator()().

113  {
114 
115  double Zeovermi = Yin.HYDRO().charge()/Yin.HYDRO().mass();
116  valarray<double> eventuallynetPovern(Yin.HYDRO().densityarray()), d_vx(Yin.HYDRO().vxarray()), d_vy(Yin.HYDRO().vxarray()), d_vz(Yin.HYDRO().vxarray());
117  valarray<double> eventuallychargeseparation(electronpressure);
118  Array2D<double> netcurrent(3,szx);
119 
120 
121  for (size_t ix(0);ix<szx;++ix){
122  eventuallynetPovern[ix] = eventuallynetPovern[ix] * Yin.HYDRO().temperature(ix);
123  }
124 
125  eventuallynetPovern = df_4thorder(eventuallynetPovern);
126  eventuallychargeseparation = df_4thorder(eventuallychargeseparation);
127 
128  for (size_t ix(0);ix<szx;++ix){
129 
130  // Net pressure
131  eventuallynetPovern[ix] = eventuallynetPovern[ix] / Yin.HYDRO().density(ix) + eventuallychargeseparation[ix] / electrondensity[ix];
132 
133  // Net current
134  netcurrent(0,ix) = Yin.HYDRO().Z(ix)*Yin.HYDRO().charge()*Yin.HYDRO().density(ix)*Yin.HYDRO().vx(ix) - electroncurrent(0,ix);
135  netcurrent(1,ix) = Yin.HYDRO().Z(ix)*Yin.HYDRO().charge()*Yin.HYDRO().density(ix)*Yin.HYDRO().vy(ix) - electroncurrent(1,ix);
136  netcurrent(2,ix) = Yin.HYDRO().Z(ix)*Yin.HYDRO().charge()*Yin.HYDRO().density(ix)*Yin.HYDRO().vz(ix) - electroncurrent(2,ix);
137 
138  // Net charge separation
139  eventuallychargeseparation[ix] = Yin.HYDRO().Z(ix)*Yin.HYDRO().charge()*Yin.HYDRO().density(ix)-electrondensity[ix];
140  }
141 
142  d_vx = df_4thorder(d_vx);
143  d_vy = df_4thorder(d_vy);
144  d_vz = df_4thorder(d_vz);
145 
146 
147  Hslope.vx(0) += - idx * eventuallynetPovern[0] / Yin.HYDRO().mass()
148  + Zeovermi * eventuallychargeseparation[0] * (Yin.EMF().Ex()(0).real()
149  + netcurrent(1,0) * Yin.EMF().Bz()(0).real()
150  - netcurrent(2,0) * Yin.EMF().By()(0).real()); //+ Rie/ni;
151 
152  Hslope.vx(0) -= netcurrent(0,0) * (idx * d_vx[0]);
153 
154  for (size_t ix(1);ix<szx-1;++ix)
155  {
156 
157  Hslope.vx(ix) += -0.5 * idx * eventuallynetPovern[ix] / Yin.HYDRO().mass()
158  + Zeovermi * eventuallychargeseparation[ix] * (Yin.EMF().Ex()(ix).real()
159  + netcurrent(1,ix) * Yin.EMF().Bz()(ix).real()
160  - netcurrent(2,ix) * Yin.EMF().By()(ix).real()); //+ Rie/ni;
161  Hslope.vx(ix) -= netcurrent(0,ix) * (idx * d_vx[ix]);
162  }
163 
164  Hslope.vx(szx - 1) += -idx * eventuallynetPovern[szx - 1] / Yin.HYDRO().mass()
165  + Zeovermi * eventuallychargeseparation[szx - 1] * (Yin.EMF().Ex()(szx - 1).real()
166  + netcurrent(1,szx - 1) * Yin.EMF().Bz()(szx - 1).real()
167  - netcurrent(2,szx - 1) * Yin.EMF().By()(szx - 1).real()); //+ Rie/ni
168  Hslope.vx(szx - 1) -= netcurrent(0,szx - 1) * (idx * d_vx[szx - 1]);
169 
173  Hslope.vy(0) += Zeovermi *
174  ( netcurrent(2,0) * Yin.EMF().Bx()(0).real()
175  - netcurrent(0,0) * Yin.EMF().Bz()(0).real()
176  + eventuallychargeseparation[0] * Yin.EMF().Ey()(0).real());
177 
178  for (size_t ix(1);ix<szx-1;++ix)
179  {
180  Hslope.vy(ix) += Zeovermi *
181  ( netcurrent(2,ix) * Yin.EMF().Bx()(ix).real()
182  - netcurrent(0,ix) * Yin.EMF().Bz()(ix).real()
183  + eventuallychargeseparation[ix] * Yin.EMF().Ey()(ix).real());
184  }
185 
186  Hslope.vy(szx - 1) += Zeovermi *
187  ( netcurrent(2,szx - 1) * Yin.EMF().Bx()(szx - 1).real()
188  - netcurrent(0,szx - 1) * Yin.EMF().Bz()(szx - 1).real()
189  + eventuallychargeseparation[szx - 1] * Yin.EMF().Ey()(szx - 1).real());
190 
191 
195  Hslope.vz(0) += Zeovermi *
196  ( netcurrent(0,0) * Yin.EMF().By()(0).real()
197  - netcurrent(1,0) * Yin.EMF().Bx()(0).real()
198  + eventuallychargeseparation[0] * Yin.EMF().Ez()(0).real());
199 
200  for (size_t ix(1);ix<szx-1;++ix)
201  {
202  Hslope.vz(ix) += Zeovermi *
203  ( netcurrent(0,ix) * Yin.EMF().By()(ix).real()
204  - netcurrent(1,ix) * Yin.EMF().Bx()(ix).real()
205  + eventuallychargeseparation[ix] * Yin.EMF().Ez()(ix).real());
206  }
207 
208  Hslope.vz(szx - 1) += Zeovermi *
209  ( netcurrent(0,szx - 1) * Yin.EMF().By()(szx - 1).real()
210  - netcurrent(1,szx - 1) * Yin.EMF().Bx()(szx - 1).real()
211  + eventuallychargeseparation[szx - 1] * Yin.EMF().Ez()(szx - 1).real());
212 }
Field1D & By()
Definition: state.h:294
valarray< double > df_4thorder(const valarray< double > &f)
Definition: nmethods.cpp:421
double idx
Evaluate Quantities from Distribution Functions.
Definition: fluid.h:31
double & vz(size_t i)
Definition: state.h:536
Field1D & Ez()
Definition: state.h:292
Field1D & Bx()
Definition: state.h:293
Hydro1D & HYDRO()
Definition: state.h:613
double & temperature(size_t i)
Definition: state.h:539
double & Z(size_t i)
Definition: state.h:542
double mass() const
Definition: state.h:523
Field1D & Bz()
Definition: state.h:295
Field1D & Ex()
Definition: state.h:290
valarray< double > & densityarray() const
Definition: state.h:545
double & vx(size_t i)
Definition: state.h:530
double & density(size_t i)
Definition: state.h:527
size_t szx
Definition: fluid.h:32
Field1D & Ey()
Definition: state.h:291
double & vy(size_t i)
Definition: state.h:533
valarray< double > & vxarray() const
Definition: state.h:546
double charge() const
Definition: state.h:524
EMF1D & EMF() const
Definition: state.h:610
Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ dummy

valarray<double> Fluid_Equation_1D::dummy
private

Definition at line 34 of file fluid.h.

◆ idx

double Fluid_Equation_1D::idx
private

Evaluate Quantities from Distribution Functions.

Definition at line 31 of file fluid.h.

Referenced by chargefraction(), density(), and velocity().

◆ Nbc

size_t Fluid_Equation_1D::Nbc
private

Definition at line 32 of file fluid.h.

Referenced by Fluid_Equation_1D().

◆ szx

size_t Fluid_Equation_1D::szx
private

Definition at line 32 of file fluid.h.

Referenced by chargefraction(), density(), updateE(), and velocity().


The documentation for this class was generated from the following files: