public abstract class Solver
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
class |
Solver.MeshData |
static interface |
Solver.NL_Eval |
Modifier and Type | Field and Description |
---|---|
double |
den0 |
double |
kTe0 |
protected int |
lin_max_it |
protected double |
lin_tol |
Solver.MeshData[] |
mesh_data |
protected int |
nl_max_it |
protected double |
nl_tol |
double |
phi0 |
Constructor and Description |
---|
Solver() |
Modifier and Type | Method and Description |
---|---|
protected double |
calculateResidue(Matrix A,
double[] x,
double[] b)
returns L2 norm of R=|Ax-b|
|
protected void |
computeGradient(double[] x,
double[] gi,
double[] gj,
Solver.MeshData md,
double scale) |
void |
exit() |
void |
init() |
int |
solveLinearGS(Solver.MeshData[] mesh_data)
solves Ax=b for x using the GS method
|
protected int |
solveLinearMultigrid(Matrix A,
double[] x,
double[] b)
solves Ax=b for x using the Multigrid method
|
protected int |
solveLinearPCG(Solver.MeshData[] md)
solves Ax=b for x using the PCG metho
|
protected int |
solveLU(Solver.MeshData[] mesh_data) |
int |
solveNonLinearNR(Solver.MeshData[] md,
Solver.NL_Eval nl_eval)
solves the nonlinear problem Ax-b=0 using the Newtons method
This method is based on the algorithm on page 614 in Numerical Analysis
F(x)=Ax-b
J(x)=dF/dx=A-db/dx=A-P
solve Jy=F
update x=x-y
also b=b0+b(x) where b0 is constant
|
abstract void |
update()
updates potential and calculates new electric field
|
abstract void |
updateGradientField() |
protected int lin_max_it
protected double lin_tol
protected int nl_max_it
protected double nl_tol
public double kTe0
public double den0
public double phi0
public Solver.MeshData[] mesh_data
public void init()
public void exit()
public abstract void update()
public int solveNonLinearNR(Solver.MeshData[] md, Solver.NL_Eval nl_eval)
md
- nl_eval
- public int solveLinearGS(Solver.MeshData[] mesh_data)
mesh_data
- protected int solveLinearMultigrid(Matrix A, double[] x, double[] b)
A
- x
- b
- protected int solveLU(Solver.MeshData[] mesh_data)
mesh_data
- protected int solveLinearPCG(Solver.MeshData[] md)
md
- protected double calculateResidue(Matrix A, double[] x, double[] b)
A
- x
- b
- public abstract void updateGradientField()
protected void computeGradient(double[] x, double[] gi, double[] gj, Solver.MeshData md, double scale)
x
- gi
- gj
- md
- scale
-