|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectspis.Solver.Poisson.PoissonSolver
spis.Solver.Poisson.PotPoissonSolver
spis.Solver.Poisson.ConjGrad3DUnstructPoissonSolver
Class Name : ConjGrad3DUnstructPoissonSolver
Project ref : SPIS project
File name : ConjGrad3DUnstructPoissonSolver.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 : Poisson solving through pre-conditioned conjugate
gradient method.
Versions and anomalies correction :
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | JF Roussel, roussel@onecert.fr and D Volpert, volpert@cert.fr | Creation |
Constructor Summary | |
ConjGrad3DUnstructPoissonSolver(ThreeDUnstructVolMesh volMesh)
Constructor with really minimum data, default boundary conditions will be: - Dirichlet on spacecraft (fixed potential) - Fourier at external boundaries (potentiel goes asymptotically to zero, within 1 meter) Default data for non-linear solving are: dens = 10^11 #/m3, Te = 0.1eV. |
|
ConjGrad3DUnstructPoissonSolver(ThreeDUnstructVolMesh volMesh,
float ne,
float Te,
float ne2,
float Te2,
boolean linear)
Constructor with little data, default boundary conditions will be: - Dirichlet on spacecraft (fixed potential) - Fourier at external boundaries (potentiel goes asymptotically to zero, within 1 meter with these pre-defined parameters) |
|
ConjGrad3DUnstructPoissonSolver(ThreeDUnstructVolMesh volMesh,
SurfMesh boundarySurfMesh,
SurfMesh scSurfMesh,
PoissonBC boundaryBC,
PoissonBC scBC,
float ne,
float Te,
float ne2,
float Te2,
boolean linear)
Default constructor |
Method Summary | |
void |
buildMatrices(int[] fourierFlag,
double[] fourierAlpha,
double[] fourierValue,
int[] dirFlag,
double[] dirichletPot)
Builds all matrices (and second member vectors) needed to later solve Poisson equation. |
int |
getIterGradient()
|
int |
getIterGradientNl()
|
int |
getIterNewton()
|
double |
getTolGradient()
|
double |
getTolGradientNl()
|
double |
getTolNewton()
|
void |
init()
Initialises solver, which should be done only once at solver creation. |
void |
initFromBc()
Builds all matrices (and second member vectors) needed to later solve Poisson equation, needed each time BC are modified. |
void |
interpolatePotential(PointList pl,
ScalVolField pot,
FloatScalTable val)
Interpolates the potential at each particle position: linear in regular tetrahedra, specific in tetrahedra next to a wire (contrarily to VolMesh interpolatePotential routine). |
void |
interpolatePotGradient(PointList pl,
ScalVolField pot,
VectTable val)
Computes the potential gradient (minus the electric field) at each particle position: linear in regular tetrahedra, specific in tetrahedra next to a wire (contrarily to VolMesh computeGradient(...) routine.) |
void |
setIterGradient(int i)
|
void |
setIterGradientNl(int i)
|
void |
setIterNewton(int i)
|
void |
setTolGradient(double d)
|
void |
setTolGradientNl(double d)
|
void |
setTolNewton(double d)
|
void |
solveLinear(ScalVolField density,
VectVolField E_)
Solves Poisson equation. |
void |
solveNonLinear(ScalVolField density,
VectVolField E_)
Solves non-linearPoisson equation. |
Methods inherited from class spis.Solver.Poisson.PotPoissonSolver |
getAnalyticDens |
Methods inherited from class spis.Solver.Poisson.PoissonSolver |
getBbc, getBsm, getElecDens, getElecDens2, getElecTemp, getElecTemp2, getScbc, getScsm, getVm, isLinear, setElecDens, setElecDens2, setElecTemp, setElecTemp2, setLinear, setScPot, solve |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public ConjGrad3DUnstructPoissonSolver(ThreeDUnstructVolMesh volMesh, SurfMesh boundarySurfMesh, SurfMesh scSurfMesh, PoissonBC boundaryBC, PoissonBC scBC, float ne, float Te, float ne2, float Te2, boolean linear)
volMesh
- volume meshboundarySurfMesh
- external boundary surface meshscSurfMesh
- spacecraft surface meshboundaryBC
- boundary conditions on external boundaryscBC
- boundary conditions on spacecraftne
- reference electron density (for non linear Poisson solver)Te
- reference electron temperature (for non linear Poisson solver)linear
- if true, linear solver will be used by defaultpublic ConjGrad3DUnstructPoissonSolver(ThreeDUnstructVolMesh volMesh, float ne, float Te, float ne2, float Te2, boolean linear)
volMesh
- volume mesh (spacecraft and external boundary meshes are extracted from volMesh)ne
- reference electron density (for non linear Poisson solver)Te
- reference electron temperature (for non linear Poisson solver)linear
- linear solver selection by default?public ConjGrad3DUnstructPoissonSolver(ThreeDUnstructVolMesh volMesh)
volMesh
- volume mesh (spacecraft and external boundary meshes are extracted from volMesh)Method Detail |
public void init()
init
in class PoissonSolver
public void buildMatrices(int[] fourierFlag, double[] fourierAlpha, double[] fourierValue, int[] dirFlag, double[] dirichletPot)
public void initFromBc()
initFromBc
in class PoissonSolver
public void solveNonLinear(ScalVolField density, VectVolField E_)
solveNonLinear
in class PoissonSolver
public void solveLinear(ScalVolField density, VectVolField E_)
solveLinear
in class PoissonSolver
public void interpolatePotGradient(PointList pl, ScalVolField pot, VectTable val)
interpolatePotGradient
in class PoissonSolver
pl
- particle list (points are enough)pot
- potential (input)val
- gradient at particle locationsPoissonInit.computeGradient(float[][], float[][], float[][], float[][], double[], float[], float[], float[], float[], int[], double[], int[][], int[][], int[][], int[][], int[][], int[][], int[], int[], int[], int[], int[], int, ThreeDUnstructVolMesh)
,
ThreeDUnstructVolMesh.computeGradient(PointList, ScalVolField, VectTable)
public void interpolatePotential(PointList pl, ScalVolField pot, FloatScalTable val)
interpolatePotential
in class PoissonSolver
pl
- particle list (points are enough)pot
- potential (input)val
- gradient at particle locationsPoissonInit.interpolatePotential(float[][], float[][], float[], double[], float[], float[], float[], int[], int[][], int[][], int[][], int[][], int[][], int[][], int[], int[], int[], int[], int[], int, ThreeDUnstructVolMesh)
,
ThreeDUnstructVolMesh.interpolate(PointList, VolField, Table)
public int getIterGradient()
public int getIterGradientNl()
public int getIterNewton()
public double getTolGradient()
public double getTolGradientNl()
public double getTolNewton()
public void setIterGradient(int i)
i
- public void setIterGradientNl(int i)
i
- public void setIterNewton(int i)
i
- public void setTolGradient(double d)
d
- public void setTolGradientNl(double d)
d
- public void setTolNewton(double d)
d
-
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |