43 #ifndef EPOT_PROBLEM_HPP
44 #define EPOT_PROBLEM_HPP 1
71 #define PLASMA_INITIAL PLASMA_PEXP_INITIAL
159 Node2DoF() : _size(0), _n2d(0) {}
160 Node2DoF(
Int3D size ) : _size(size) {
161 _n2d =
new int32_t[_size[0]*_size[1]*_size[2]];
163 ~Node2DoF() {
delete _n2d; }
165 void resize(
Int3D size ) {
169 _n2d =
new int32_t[_size[0]*_size[1]*_size[2]];
172 int32_t &operator()(
int i )
173 {
return( _n2d[i] ); }
174 int32_t &operator()(
int i,
int j )
175 {
return( _n2d[i+j*_size[0]] ); }
176 int32_t &operator()(
int i,
int j,
int k )
177 {
return( _n2d[i+j*_size[0]+k*_size[0]*_size[1]] ); }
179 const int32_t &operator()(
int i )
const
180 {
return( _n2d[i] ); }
181 const int32_t &operator()(
int i,
int j )
const
182 {
return( _n2d[i+j*_size[0]] ); }
183 const int32_t &operator()(
int i,
int j,
int k )
const
184 {
return( _n2d[i+j*_size[0]+k*_size[0]*_size[1]] ); }
202 int32_t _neumann_order;
211 std::vector<double> _rhoi;
213 std::vector<double> _Ei;
218 bool (*_force_pot_func)(double,double,double);
219 bool (*_init_plasma_func)(double,double,double);
225 int32_t a, int32_t b,
double val );
227 void add_initial_plasma( int32_t i, int32_t j, int32_t k,
230 void add_forced_pot( int32_t i, int32_t j, int32_t k,
233 void add_vacuum_node( int32_t i, int32_t j, int32_t k,
236 void add_neumann_node(
signed char a, int32_t i, int32_t j, int32_t k,
239 void add_solid_edge_node(
signed char a, int32_t i, int32_t j, int32_t k,
242 void clear_problem(
void );
286 bool (*force_pot_func)(
double,
double,
double) );
293 bool (*plasma_func)(
double,
double,
double) );
324 std::vector<double> rhoi, std::vector<double> Ei );
369 bool linear(
void )
const;
385 void save( std::ostream &s )
const;