|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectspis.Solver.Poisson.PoissonSolver
Class Name : PoissonSolver (generic Poisson Solver)
Project ref : SPIS project
File name : PoissonSolver.java
File type : class
Copyright : ONERA, 2 Av. E. Belin, 31055 Toulouse cedex, France
http://www.onecert.fr
Status : under development
Creation : 25/08/2003
Modification :
Description : general abstract Poisson Solver class.
Stores data necessary for Poisson equation solving:
- mesh data (possibly only throug reference to a volume mesh
- boundary conditions
- solver tuning parameters
Provides two main methods: initialisation and solving.
Versions and anomalies correction :
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | JF Roussel, roussel@onecert.fr | Creation |
Field Summary | |
protected PoissonBC |
bbc
Boundary Conditions on external Boundary of the simulation box (must be defined on bsm) |
protected SurfMesh |
bsm
pointer to Surface Mesh, external Boundary of the simulation box (must = vm.getBsm()) |
protected float |
elecDens
reference electron density used for Maxwell-Boltzman electron distribution in Poisson non-linear equation |
protected float |
elecDens2
reference electron density used for 2nd Maxwell-Boltzman electron distribution in Poisson non-linear equation |
protected float |
elecTemp
reference electron temperature used for Maxwell-Boltzman electron distribution in Poisson non-linear equation [eV] |
protected float |
elecTemp2
reference electron temperature used for 2nd Maxwell-Boltzman electron distribution in Poisson non-linear equation [eV] |
protected boolean |
linear
Flag to select the default behaviour of the Poisson solver: the default call of solve() will either call solveLinear() or call solveNonLinear depending of this flag |
protected PoissonBC |
scbc
Boundary Conditions on SpaceCraft Surface Mesh, (must be defined on scsm) |
protected SurfMesh |
scsm
pointer to SpaceCraft Surface Mesh, (must = vm.getScsm()) |
protected VolMesh |
vm
pointer to the Volume Mesh this solver works on |
Constructor Summary | |
PoissonSolver(VolMesh volMesh,
SurfMesh boundarySurfMesh,
SurfMesh scSurfMesh,
PoissonBC boundaryBC,
PoissonBC scBC,
float ne,
float Te,
float ne2,
float Te2,
boolean linear_)
Default constructor. |
Method Summary | |
abstract AnalyticVolDistrib |
getAnalyticDens(VectVolField E)
Returns the analytic volume distribution the non-linear solver is based upon. |
PoissonBC |
getBbc()
returns external Boundary Boundary Condition (pointer, no copy) |
SurfMesh |
getBsm()
returns Boundary Surface Mesh (pointer, no copy) |
float |
getElecDens()
|
float |
getElecDens2()
|
float |
getElecTemp()
|
float |
getElecTemp2()
|
PoissonBC |
getScbc()
returns SpaceCraft Boundary Condition (pointer, no copy) |
SurfMesh |
getScsm()
returns SpaceCraft Surfave Mesh (pointer, no copy) |
VolMesh |
getVm()
returns volume mesh (pointer, no copy) |
abstract void |
init()
Initialises solver. |
abstract void |
initFromBc()
Initialises internal data (matrices...), which have to be updated when new boundary conditions are modified (to be called each time BC are modified, including SC potential change, but should be done by the BC and potential updating methods of PoissonSolver classes) |
abstract void |
interpolatePotential(PointList pl,
ScalVolField pot,
FloatScalTable val)
Interpolates the potential at each particle position: The interpolation should be specific to the solver and better than the generic linear interpolation provided by the VolMesh for a VolField. |
abstract void |
interpolatePotGradient(PointList pl,
ScalVolField pot,
VectTable val)
Computes the potential gradient (minus the electric field) at each particle position. |
boolean |
isLinear()
|
void |
setElecDens(float f)
|
void |
setElecDens2(float f)
|
void |
setElecTemp(float f)
|
void |
setElecTemp2(float f)
|
void |
setLinear(boolean b)
|
void |
setScPot(ScalSurfField scPot)
Sets the boundary condition on spacecraft to Dirichlet (fixed potential) |
void |
solve(ScalVolField density,
VectVolField E)
Default call to the solver. |
abstract void |
solveLinear(ScalVolField density,
VectVolField E)
Solves Poisson equation. |
abstract void |
solveNonLinear(ScalVolField density,
VectVolField E)
Solves non-linear Poisson equation (electron density = exp(pot/Te). |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected VolMesh vm
protected SurfMesh bsm
protected SurfMesh scsm
protected PoissonBC bbc
protected PoissonBC scbc
protected float elecDens
protected float elecTemp
protected float elecDens2
protected float elecTemp2
protected boolean linear
Constructor Detail |
public PoissonSolver(VolMesh volMesh, SurfMesh boundarySurfMesh, SurfMesh scSurfMesh, PoissonBC boundaryBC, PoissonBC scBC, float ne, float Te, float ne2, float Te2, boolean linear_)
Method Detail |
public abstract void init()
public abstract void initFromBc()
public abstract void solveLinear(ScalVolField density, VectVolField E)
public abstract void solveNonLinear(ScalVolField density, VectVolField E)
public void solve(ScalVolField density, VectVolField E)
density
- E
- solveLinear(ScalVolField, VectVolField)
,
solveNonLinear(ScalVolField, VectVolField)
public abstract void interpolatePotGradient(PointList pl, ScalVolField pot, VectTable val)
pl
- particle list (points are enough)pot
- optential (input)val
- gradient at particle locationsVolMesh.computeGradient(PointList, ScalVolField, VectTable)
public abstract void interpolatePotential(PointList pl, ScalVolField pot, FloatScalTable val)
pl
- particle list (points are enough)pot
- potential (input)val
- gradient at particle locationsVolMesh.interpolate(PointList, VolField, Table)
public abstract AnalyticVolDistrib getAnalyticDens(VectVolField E)
E
- pointer to the electric field to be used for this analytic distributionpublic void setScPot(ScalSurfField scPot)
scPot
- the fixed potenial valuepublic VolMesh getVm()
public SurfMesh getBsm()
public SurfMesh getScsm()
public PoissonBC getBbc()
public PoissonBC getScbc()
public float getElecDens()
public float getElecTemp()
public boolean isLinear()
public void setElecDens(float f)
f
- public void setElecTemp(float f)
f
- public void setLinear(boolean b)
b
- public float getElecDens2()
public float getElecTemp2()
public void setElecDens2(float f)
f
- public void setElecTemp2(float f)
f
-
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |