|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectspis.Solver.Poisson.PoissonInit
Class Name : PoissonInit (initialise Poisson Solver)
Project ref : SPIS project
File name : PoissonInit.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 : Contains the routines necessary to intialise the conjugate
gradient Poisson solver (see class ConjGrad3DUnstructPoissonSolver).
It contains:
Cuthil Mac Kee renumbering the mesh
Compute two pointers for the compressed storage of non diagonal non null element of the matrix
Assembling the Poisson and Mass matrix with the compressed storage
Assembling and building the preconditionner for the Linear Poisson Solver
Implementing Fourier Boundary conditions
Implementing Dirichlet Boundary Conditions
Compute the electric field on each particle
Versions and anomalies correction :
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | D. Volpert, Dominique.Volpert@cert.fr F. Rogier, rogier@cert.fr | Implementation |
Constructor Summary | |
PoissonInit()
|
Method Summary | |
static void |
assembPoissonMass(int nodeNb,
int cellNb,
int[][] cellNode,
int[][] surfCell,
float[] cellVol,
float[][] surfNormal,
float[] surfArea,
int[][] cellSurf,
int[] pointMat,
int[] nonZeroMat,
double[] matPoisson,
double[] diagPoisson,
double[] matMass,
double[] diagMass)
Assembles the Poisson and Mass matrix with compressed storage. |
static void |
assembPoissonMassWires(int nodeNb,
int cellNb,
int[][] cellNode,
int[][] surfCell,
float[] cellVol,
float[][] surfNormal,
float[] surfArea,
int[] cellWire,
int[][] cellSurf,
int[] pointMat,
int[] nonZeroMat,
double[] matPoisson,
double[] diagPoisson,
double[] matMass,
double[] diagMass)
Assembles the Poisson and Mass matrix with compressed storage. |
static void |
assembPrecondLinear(int nodeNb,
int bandw,
int[] nonZeroMat,
int[] pointMat,
double[] diag,
double[] mat,
double[] precond,
org.netlib.util.intW info)
Preconditionning : assembling and building of the preconditionner for the Linear Poisson Solver. |
static void |
calLenWire(float[][] xyz,
float[][] minusDrDn,
float[][] surfNormale,
float[] lenNodeWire,
int[][] surfNode,
int[][] cellSurf,
int[][] edgeNode,
int[] cellWire,
int[] edgeFlag,
int[] wireEdge,
int cellNb,
int edgeNb)
|
static int |
calPointeur(int[][] cellNode,
int[][] edgeNode,
int[] pointMat,
int[] nonZeroMat,
int nodeNb,
int edgeNb)
Compute the index of the column number of j > i for each row i of the matrix |
static void |
computeGradient(float[][] xyz,
float[][] surfNormal,
float[][] partGrad,
float[][] partCoord,
double[] secmembre,
float[] cellVol,
float[] surfArea,
float[] nodePot,
float[] edgeRadius,
int[] edgeIndex,
double[] dirValue,
int[][] cellNode,
int[][] surfCell,
int[][] cellSurf,
int[][] cellEdge,
int[][] surfNode,
int[][] edgeNode,
int[] cellIndex,
int[] cellWire,
int[] wireEdge,
int[] edgeFlag,
int[] nodeFlag,
int partNb,
ThreeDUnstructVolMesh vm)
Computes the electric field at each particle position: linear in regular tetrahedra, specific in tetrahedra next to a wire (contrarily to the other computeGradient(...) routine). |
static void |
computeGradient(int partNb,
int[] cellIndex,
float[] nodePot,
int nodeNb,
int cellNb,
int[][] cellNode,
int[][] surfCell,
float[] cellVol,
float[][] surfNormal,
float[] surfArea,
int[][] cellSurf,
float[][] partGrad)
Computes the electric field at each particle position (depending only on cell index indeed, since electric field is constant over a cell). |
static void |
cuthilMackee(int[][] cellNode,
int[][] edgeNode,
int[] newNum,
int[] nonZeroMat,
int[] bandTab,
int nodeNb,
int cellNb,
int edgeNb)
Cuthil-Mac Kee Renumbering of the mesh and building of the indexes of the matrices. |
static void |
faceOppos(int[][] cellNode,
int[][] surfNode,
int[][] cellSurf,
int cellNb)
renumbering local number cellSurf: this must be the local number of the opposit node in tetrahedra Input: nodes of a cell int[][] cellNode[cellNb][4] nodes of a surface int[][] surfNode[surfNb][3] surfaces of a cell int[][] cellSurf[cellNb][4] number of cell int cellNb Output : modified surface of a cell int[][] cellSurf[cellNb][4] |
static void |
fourierWireLump(float[][] minusDrDn,
double[] diagpoisson,
double[] secMembre,
float[] surfArea,
float[] lenNodeWire,
double[] dirValue,
float[] edgeRadius,
int[] edgeIndex,
int[][] cellNode,
int[][] surfNode,
int[][] cellSurf,
int[] cellWire,
int[] wireEdge,
int cellNb)
|
static void |
initDirichletBC(double[] diagPoisson,
double[] matPoisson,
double[] diagMass,
double[] matMass,
double[] bcPoisson,
double[] dirValue,
int[] flagDir,
int[] pointMat,
int[] nonZeroMat,
int nodeNb,
int[] bandTab)
Implements Dirichlet Boundary Conditions. |
static void |
initFourierBC(double[] diagPoisson,
double[] matPoisson,
double[] bcPoisson,
double[] fourValue,
float[] surfArea,
double[] alphaSurf,
int[][] surfNode,
int[] flagFour,
int[] pointMat,
int[] nonZeroMat,
int surfNb)
Implements Fourier boundary conditions. . |
static void |
interpolatePotential(float[][] xyz,
float[][] partCoord,
float[] partPot,
double[] secmembre,
float[] cellVol,
float[] nodePot,
float[] edgeRadius,
int[] edgeIndex,
int[][] cellNode,
int[][] surfCell,
int[][] cellSurf,
int[][] cellEdge,
int[][] surfNode,
int[][] edgeNode,
int[] cellIndex,
int[] cellWire,
int[] wireEdge,
int[] edgeFlag,
int[] nodeFlag,
int partNb,
ThreeDUnstructVolMesh vm)
Computes the potential at each particle position by interpolation: linear in regular tetrahedra, specific in tetrahedra next to a wire |
private static int |
largband(int[][] cellNode,
int[] newNum,
int cellNb)
Compute the bandwidth |
static void |
quicksort(int[] tablo,
int[] index,
int n)
quick sort of integer number tablo. |
private static int |
renumcklb(int[][] cellNode,
int[] tabvois,
int[] njk,
int[] nbvois,
int[] newNum,
int[] nouvp,
int cellNb,
int nodeNb,
int itermax)
renumbering after Cuthil Mackee |
private static int |
voisine(int[][] cellNode,
int[][] edgeNode,
int[] tabvois,
int[] njk,
int[] nbvois,
int nodeNb,
int edgeNb)
compute neighbour |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public PoissonInit()
Method Detail |
public static void cuthilMackee(int[][] cellNode, int[][] edgeNode, int[] newNum, int[] nonZeroMat, int[] bandTab, int nodeNb, int cellNb, int edgeNb)
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | D. Volpert, Dominique.Volpert@cert.fr | Implementation |
private static int voisine(int[][] cellNode, int[][] edgeNode, int[] tabvois, int[] njk, int[] nbvois, int nodeNb, int edgeNb)
public static int calPointeur(int[][] cellNode, int[][] edgeNode, int[] pointMat, int[] nonZeroMat, int nodeNb, int edgeNb)
public static void quicksort(int[] tablo, int[] index, int n)
private static int largband(int[][] cellNode, int[] newNum, int cellNb)
private static int renumcklb(int[][] cellNode, int[] tabvois, int[] njk, int[] nbvois, int[] newNum, int[] nouvp, int cellNb, int nodeNb, int itermax)
public static void assembPoissonMass(int nodeNb, int cellNb, int[][] cellNode, int[][] surfCell, float[] cellVol, float[][] surfNormal, float[] surfArea, int[][] cellSurf, int[] pointMat, int[] nonZeroMat, double[] matPoisson, double[] diagPoisson, double[] matMass, double[] diagMass)
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | F. Rogier, rogier@cert.fr | Implementation |
public static void assembPoissonMassWires(int nodeNb, int cellNb, int[][] cellNode, int[][] surfCell, float[] cellVol, float[][] surfNormal, float[] surfArea, int[] cellWire, int[][] cellSurf, int[] pointMat, int[] nonZeroMat, double[] matPoisson, double[] diagPoisson, double[] matMass, double[] diagMass)
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | F. Rogier, rogier@cert.fr | Implementation |
public static void assembPrecondLinear(int nodeNb, int bandw, int[] nonZeroMat, int[] pointMat, double[] diag, double[] mat, double[] precond, org.netlib.util.intW info)
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | F. Rogier,rogier@cert.fr | Implementation |
public static void initFourierBC(double[] diagPoisson, double[] matPoisson, double[] bcPoisson, double[] fourValue, float[] surfArea, double[] alphaSurf, int[][] surfNode, int[] flagFour, int[] pointMat, int[] nonZeroMat, int surfNb)
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | D. Volpert, Dominique.Volpert@cert.fr | Implementation |
public static void initDirichletBC(double[] diagPoisson, double[] matPoisson, double[] diagMass, double[] matMass, double[] bcPoisson, double[] dirValue, int[] flagDir, int[] pointMat, int[] nonZeroMat, int nodeNb, int[] bandTab)
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | D. Volpert, Dominique.Volpert@cert.fr | Implementation |
public static void computeGradient(int partNb, int[] cellIndex, float[] nodePot, int nodeNb, int cellNb, int[][] cellNode, int[][] surfCell, float[] cellVol, float[][] surfNormal, float[] surfArea, int[][] cellSurf, float[][] partGrad)
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)
public static void computeGradient(float[][] xyz, float[][] surfNormal, float[][] partGrad, float[][] partCoord, double[] secmembre, float[] cellVol, float[] surfArea, float[] nodePot, float[] edgeRadius, int[] edgeIndex, double[] dirValue, int[][] cellNode, int[][] surfCell, int[][] cellSurf, int[][] cellEdge, int[][] surfNode, int[][] edgeNode, int[] cellIndex, int[] cellWire, int[] wireEdge, int[] edgeFlag, int[] nodeFlag, int partNb, ThreeDUnstructVolMesh vm)
xyz
- surfNormal
- partGrad
- electric field on each particle (output, others are input)partCoord
- secmembre
- cellVol
- surfArea
- nodePot
- edgeRadius
- edgeIndex
- dirValue
- cellNode
- surfCell
- cellSurf
- cellEdge
- surfNode
- edgeNode
- cellIndex
- cellWire
- wireEdge
- edgeFlag
- nodeFlag
- partNb
- vm
- computeGradient(int, int[], float[], int, int, int[][], int[][], float[], float[][], float[], int[][], float[][])
public static void interpolatePotential(float[][] xyz, float[][] partCoord, float[] partPot, double[] secmembre, float[] cellVol, float[] nodePot, float[] edgeRadius, int[] edgeIndex, int[][] cellNode, int[][] surfCell, int[][] cellSurf, int[][] cellEdge, int[][] surfNode, int[][] edgeNode, int[] cellIndex, int[] cellWire, int[] wireEdge, int[] edgeFlag, int[] nodeFlag, int partNb, ThreeDUnstructVolMesh vm)
xyz
- partCoord
- partPot
- potential on each particle (output, others are input)secmembre
- cellVol
- nodePot
- edgeRadius
- edgeIndex
- cellNode
- surfCell
- cellSurf
- cellEdge
- surfNode
- edgeNode
- cellIndex
- cellWire
- wireEdge
- edgeFlag
- nodeFlag
- partNb
- vm
- PoissonInit#computeGradient(float[][],float[][],float[][],float[][],double[],float[],float[],[],float[],int[],
double[],int[][],int[][],int[][],int[][],int[][],int[][],int[],int[],int[],int[],int[],int,ThreeDUnstructVolMesh vm)
public static void faceOppos(int[][] cellNode, int[][] surfNode, int[][] cellSurf, int cellNb)
public static void calLenWire(float[][] xyz, float[][] minusDrDn, float[][] surfNormale, float[] lenNodeWire, int[][] surfNode, int[][] cellSurf, int[][] edgeNode, int[] cellWire, int[] edgeFlag, int[] wireEdge, int cellNb, int edgeNb)
public static void fourierWireLump(float[][] minusDrDn, double[] diagpoisson, double[] secMembre, float[] surfArea, float[] lenNodeWire, double[] dirValue, float[] edgeRadius, int[] edgeIndex, int[][] cellNode, int[][] surfNode, int[][] cellSurf, int[] cellWire, int[] wireEdge, int cellNb)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |