|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectspis.Surf.SurfMesh.SurfMesh
spis.Surf.SurfMesh.UnstructSurfMesh
spis.Surf.SurfMesh.ThreeDUnstructSurfMesh
Class Name : ThreeDUnstructSurfMesh (generic Surface Mesh class)
Project ref : SPIS project
File name : ThreeDUnstructSurfMesh.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 : 3-dimensional Unstructured Surface Mesh class (triangles only)
Specificities and constraints:
- thin surfaces, i.e. whose both sides are physical (e.g. a solar array)
must be duplicated and tagged
- the i-th surfNode of a surf must be "opposite" the i-th surfEdge
(i-th node does not belong to the i-th edge)
Versions and anomalies correction :
Version number | Author (name, e-mail) | Corrections/Modifications |
0.1 | JF Roussel, roussel@onecert.fr | Creation |
Field Summary | |
private int[] |
edgeFlag
edge flag (int[edgeNb]) to tag thin surface (2D) and thin wires (1D): - bit 0: 0 = edge of a surface 1 = not a real edge but a wire - bit 1: 0 = edge of a regular surface 1 = edge of a thin surface hence: - edgeFlag=0 if edge of a regular surface - edgeFlag=1 if this edge is indeed a wire - edgeFlag=2 if edge of a thin surface - nodeFlag=3 is forbidden (bits 0 and 1 are exclusive) |
private int[] |
edgeIndex
index of the edge in the VolMesh numbering |
private int[] |
edgeIndexS2
if a thin surface (edgeFlag = 2), index of the opposite duplicated edge (Side 2) in the same local surface numbering |
private float[] |
edgeLength
Edge length |
private int |
edgeNb
edge number |
private int[][] |
edgeNode
nodes of an edge (int[EdgeNb][2]) |
private float[] |
edgeRadius
wire real physical radius in case this edge is indeed a wire (wire cylinder not meshed) |
private int[][] |
edgeSurf
surfaces on both sides of an edge (int[edgeNb][2]) order is meaningless, negative value if out of mesh |
private Matrix |
mapNE
Node to surface connectivity matrix, for nodes and edges belonging to 1D wires only! |
private Matrix |
mapNEC
mapNE column-normalised (sum_j Mij = 1) |
private Matrix |
mapNECT
transpose of mapNEC |
private Matrix |
mapNER
mapNE row-normalised (sum_j Mij = 1) |
private Matrix |
mapNERT
transpose of mapNER |
private Matrix |
mapNS
Node to surface connectivity matrix |
private Matrix |
mapNSC
mapNS column-normalised (sum_j Mij = 1) |
private Matrix |
mapNSCT
transpose of mapNSC |
private Matrix |
mapNSR
mapNS row-normalised (sum_j Mij = 1) |
private Matrix |
mapNSRT
transpose of mapNSR |
private int[] |
nodeFlag
node flag (int[nodeNb]) to tag thin surface (2D) and thin wires (1D). : - bit 0: 0 = node of a surface 1 = node of a wire-like edge - bit 1: 0 = node of a regular surface 1 = node of a thin surface hence: - nodeFlag=0 if a node of a regular surface - nodeFlag=1 if a node of a wire-like edge - nodeFlag=2 if a node of a thin surface - nodeFlag=3 is forbidden (bits 0 and 1 are exclusive) |
private int[] |
nodeIndex
index of the node in the VolMesh numbering |
private int[] |
nodeIndexS2
if a thin surface (nodeFlag = 2), index of the opposite duplicated node (Side 2) in the same local surface numbering |
private int |
nodeNb
node (points) number |
private float[] |
surfArea
Surface area volume |
private int[][] |
surfEdge
edges of a surface (int[SurfNb][3]) |
private int[] |
surfFlag
surface flag (int[surfNb]) to tag thin surfaces. : - lowest weight bit (bit 0): = 0 - next bit: 0 = regular surface 1 = thin surface hence: - surfFlag=0 if a regular surface - surfFlag=2 if not |
private int[] |
surfIndex
index of the surface in the numbering of the volume mesh this surface mesh is the boundary of |
private int[] |
surfIndexS2
if a thin surface (surfFlag = 2), index of the opposite numbering surface (Side 2) in the same local surface numbering |
private int |
surfNb
surface (triangle) number |
private int[][] |
surfNode
nodes of a surface (int[SurfNb][3]) |
private float[][] |
surfNormal
Normal to a Surface (SurfNormal[i][j] = j-th coordinate of i-th surface normal), they point out of the volume, (hence into the spacecraft) |
private float[] |
surfThickness
surface real physical thickness in case it is considered as thin from the mesh viewpoint (thickness not meshed, surfFlag = 2) |
private ThreeDUnstructVolMesh |
vm
volume mesh |
private boolean |
volNodeRenumbered
Has the volume node renumbering be performed ? |
private float[][] |
xyz
nodes coordinates (xyz[i][j] = j-th coordinate of i-th node) |
Fields inherited from class spis.Surf.SurfMesh.SurfMesh |
|
Constructor Summary | |
ThreeDUnstructSurfMesh(Geom geometry,
ThreeDUnstructVolMesh volMesh,
int surfNbr,
int edgeNbr,
int nodeNbr,
int[][] surfEdges,
int[][] surfNodes,
int[][] edgeNodes,
int[] surfFlags,
int[] surfIndices,
int[] surfIndicesS2,
float[] surfThicknesses,
int[] edgeFlags,
int[] edgeIndices,
int[] edgeIndicesS2,
float[] edgeRadiuses,
int[] nodeFlags,
int[] nodeIndices,
int[] nodeIndicesS2,
float[][] xyzCoord)
Main constructor with basic sufficient data provided. |
Method Summary | |
void |
advance(PartList pl,
VectTable dx)
Advances the particles of particle list pl from their current position to their next position, defined by the shift vector dx. |
float[] |
applyScalFunction(Centring centring,
ScalFunctionOfVect f)
Applies a function of the position to the nodes (or surfaces/cells... depending on centring), and returns the result (f(xi,yi,zi)) as a float array. |
float[][] |
applyVectFunction(Centring centring,
VectFunctionOfVect f)
Applies a vectorial function of the position to the nodes (or surfaces/cells... depending on centring), and returns the result (f(xi,yi,zi)) as a float[i][] array. |
VectSurfField |
buildSurfCentre()
Builds and returns the table of the surface centre coordinates as a surface-centred VectSurfField |
private void |
computeMaps()
Computes mapping matrices: - between nodes and surfaces (excluding nodes of 1D wires), mapNS* - between nodes and edges of 1D wires, mapNE* |
ScalSurfField[][] |
computeNeighbouringData()
Computes and returns data characterising neighbour cells of a cell (needed for surface conductivity). |
void |
currentDeposit(PartList pl,
ScalSurfField cur)
Performs the deposit of charges of the particle list pl in the current cur. |
void |
deposit(PartList pl,
ScalSurfField current,
int charge,
int mass)
Performs the deposit of charges of the particle list pl in the ScalSurfField current (current is incremented, reset it before if you want to start from 0). |
int[] |
getEdgeFlag()
|
ScalSurfField |
getEdgeLength()
Returns length of edges |
float[] |
getEdgeRadius()
Returns real radius of thin wires |
int |
getElNb(Centring centring)
Returns the number of elements of dimension dim of a given centring |
int |
getElNb(int relDim)
Returns the number of elements of relative dimension relDim |
VectSurfField |
getNodeCoord()
Returns the table of the nodes/points coordinates as node-centred VectSurfField |
int[] |
getNodeIndex()
Returns nodeIndex, i.e. index of the nodes in the VolMesh numbering |
ScalSurfField |
getSurfArea()
returns surface areas as a ScalSurfField |
int[] |
getSurfIndex()
Returns surfIndex, i.e.index of the surface in the numbering of the volume mesh |
int[][] |
getSurfNode()
Returns the table of the nodes/points of each surface as an int[][]. |
VectSurfField |
getSurfNormal()
returns normals to mesh surfaces as a VectSurfField |
float[] |
getSurfThickness()
Returns real thickness of thin plates |
void |
initialise()
Performs extra mesh initialisations. |
void |
interpolate(PointList pl,
SurfField sf,
Table val)
Interpolates the surface field sf (defined on the mesh nodes/cells/...) |
boolean |
isVolNodeRenumbered()
|
void |
mapField(ScalSurfField fin,
ScalSurfField fout,
int flag)
Maps surface fields of different centering into one another (fin into fout). |
void |
rebuildIndexTables(int[] surfIndexV,
int[] edgeIndexV,
int[] nodeIndexV,
int[] surfFlagV,
int[] edgeFlagV,
int[] nodeFlagV,
int flagMask)
Obsolete, no longer used. |
void |
samplePos(IntScalTable indexT,
SpaceVectTable posT)
Performs a random sampling of particle positions. |
void |
setSurfArea(float[] surfArea)
|
void |
setVm(ThreeDUnstructVolMesh volMesh)
sets volume mesh (pointer, no copy), and orients the surface normals of the surface mesh coming out out of the volume mesh (the order of the surface nodes is modified accordingly). |
void |
setVolInternNodeNumbering(int[] internNum)
Updates pointers to volume nodes (nodeIndex and nodeIndex2) when volume nodes are renumbered (checks it is not done a second time). |
void |
setVolNodeRenumbered(boolean b)
|
Methods inherited from class spis.Surf.SurfMesh.SurfMesh |
checkIsOnThisMesh, getGeom, getVm, setVm |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private ThreeDUnstructVolMesh vm
private int surfNb
private int edgeNb
private int nodeNb
private int[][] surfEdge
private int[][] surfNode
private int[][] edgeNode
private int[][] edgeSurf
private int[] surfFlag
private int[] surfIndex
private int[] surfIndexS2
private float[] surfThickness
private int[] edgeFlag
private int[] edgeIndex
private int[] edgeIndexS2
private float[] edgeRadius
private int[] nodeFlag
private int[] nodeIndex
private int[] nodeIndexS2
private float[][] xyz
private float[] surfArea
private float[] edgeLength
private float[][] surfNormal
private boolean volNodeRenumbered
private Matrix mapNS
private Matrix mapNSR
private Matrix mapNSC
private Matrix mapNSRT
private Matrix mapNSCT
private Matrix mapNE
private Matrix mapNER
private Matrix mapNEC
private Matrix mapNERT
private Matrix mapNECT
Constructor Detail |
public ThreeDUnstructSurfMesh(Geom geometry, ThreeDUnstructVolMesh volMesh, int surfNbr, int edgeNbr, int nodeNbr, int[][] surfEdges, int[][] surfNodes, int[][] edgeNodes, int[] surfFlags, int[] surfIndices, int[] surfIndicesS2, float[] surfThicknesses, int[] edgeFlags, int[] edgeIndices, int[] edgeIndicesS2, float[] edgeRadiuses, int[] nodeFlags, int[] nodeIndices, int[] nodeIndicesS2, float[][] xyzCoord)
Method Detail |
public void initialise()
public void rebuildIndexTables(int[] surfIndexV, int[] edgeIndexV, int[] nodeIndexV, int[] surfFlagV, int[] edgeFlagV, int[] nodeFlagV, int flagMask)
public void currentDeposit(PartList pl, ScalSurfField cur)
currentDeposit
in class SurfMesh
public void deposit(PartList pl, ScalSurfField current, int charge, int mass)
deposit
in class SurfMesh
public void advance(PartList pl, VectTable dx)
advance
in class SurfMesh
pl
- List of particles to be advanceddx
- Shift vectors for particlespublic void interpolate(PointList pl, SurfField sf, Table val)
interpolate
in class SurfMesh
pl
- Point list at which interpolation is requested (input)sf
- Surface Field to be interpolatedval
- Table with interpolated valuespublic void mapField(ScalSurfField fin, ScalSurfField fout, int flag)
mapField
in class SurfMesh
private void computeMaps()
public ScalSurfField[][] computeNeighbouringData()
computeNeighbouringData
in class SurfMesh
public void setVolInternNodeNumbering(int[] internNum)
public float[] applyScalFunction(Centring centring, ScalFunctionOfVect f)
applyScalFunction
in class SurfMesh
public float[][] applyVectFunction(Centring centring, VectFunctionOfVect f)
applyVectFunction
in class SurfMesh
public void samplePos(IntScalTable indexT, SpaceVectTable posT)
samplePos
in class SurfMesh
indexT
- surface index of each particle (input)posT
- position of each particle (output)public int getElNb(Centring centring)
getElNb
in class SurfMesh
public int getElNb(int relDim)
getElNb
in class SurfMesh
public VectSurfField getSurfNormal()
getSurfNormal
in class SurfMesh
public ScalSurfField getSurfArea()
getSurfArea
in class SurfMesh
public ScalSurfField getEdgeLength()
SurfMesh
getEdgeLength
in class SurfMesh
public VectSurfField getNodeCoord()
public VectSurfField buildSurfCentre()
public int[][] getSurfNode()
public int[] getSurfIndex()
public int[] getNodeIndex()
public void setVm(ThreeDUnstructVolMesh volMesh)
public boolean isVolNodeRenumbered()
public void setVolNodeRenumbered(boolean b)
b
- declare if node renumbering is on (defined by CutHill McKee renumbering)public float[] getEdgeRadius()
SurfMesh
getEdgeRadius
in class SurfMesh
public float[] getSurfThickness()
SurfMesh
getSurfThickness
in class SurfMesh
public int[] getEdgeFlag()
getEdgeFlag
in class SurfMesh
public void setSurfArea(float[] surfArea)
surfArea
- The surfArea to set.
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |