spis.Vol.VolDistrib
Class VolDistribWithIO

java.lang.Object
  extended byspis.Vol.VolDistrib.VolDistrib
      extended byspis.Vol.VolDistrib.VolDistribWithIO
Direct Known Subclasses:
AnalyticVolDistrib, PICVolDistrib

public abstract class VolDistribWithIO
extends VolDistrib

Class Name : VolDistribWithIO
Project ref : SPIS project
File name : VolDistribWithIO.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 : generic abstract Volume Distribution including input-ouput data for move method: in/out matter fluxes, electric/magnetic fields:
- selfInFlux: internally-generated incoming fluxes, which can be considered as part of this distribution (typically boundary fluxes generating this particle distribution), they are not externally updated since considered as static (a sampling is done at most)
- inFlux: externally-generated incoming fluxes, which are coming from other objects (typically secondary electrons form SC, ion source from SC...), they are externally updated by the external objects (mostly the spacecraft) before each iteration (although this updating (or not) of inFlux (or of selfInFlux) is external to this class, hence uncontrolled, and can indeed be coded differently)
- scOutFlux: flux of particles steming from this volume distribution onto the spacecraft
- bdOutFlux: flux of particles steming from this volume distribution onto external boundaries
NB: depending on the subtype of the incoming fluxes and the volume distribution, the incoming fluxes can be re-sampled or not, see derived VolDistrib sub-classes.
Since some of these fluxes can be inexistent (no influx, outflux to be discarded) it is allowed not to declare them:
- they are not requested in the constructors and are set to null or 0-dimension array
- use the setters (setInFlux...) to declare the ones needed
Only the E field is requested (the others can be passed as null pointers)

Sub-classes to be built from UI parameters:
to offer the possibility be built from UI parameters (local and global parameters, the latter including the class name) subclasses of this class must have a constructor with arguments:
- GlobalParameter[] globalParams,
- LocalParameter[] localParams,
- String option: one of "ions1", "ions2", "elec1", "elec2"
- VolMesh vm,
- VectVolField E,
- VectVolField B
which is not enforced at compilation time, but must be true at execution time when such a class is built.

Versions and anomalies correction :

Version numberAuthor (name, e-mail) Corrections/Modifications
0.1 JF Roussel, roussel@onecert.frCreation


Version:
0.1
Author:
JF Roussel

Constructor Summary
VolDistribWithIO(VolMesh volMesh, MatterBC selfInFlux_, MatterBC inFlux_, SurfDistrib scOutFlux_, SurfDistrib bdOutFlux_, EField eField, VectVolField B_)
          Constructor with full IO data, electric field defined as a physical EField (including solver).
VolDistribWithIO(VolMesh volMesh, MatterBC selfInFlux_, MatterBC inFlux_, SurfDistrib scOutFlux_, SurfDistrib bdOutFlux_, VectVolField E_, VectVolField B_)
          Constructor with full IO data.
VolDistribWithIO(VolMesh volMesh, VectVolField E_, VectVolField B_)
          Default constructor (IO data must then be defined through setters!).
 
Method Summary
 void buildAllInFlux()
          Builds the list of all the incoming fluxes (as SurfDistrib) including internally- and externally-generated incoming fluxes.
abstract  void buildMostAccurateScOutFlux()
          Builds the most accurate outgoing flux onto spacecraft.
 VectVolField getB()
           
 SurfDistrib getBdOutFlux()
           
 VectVolField getE()
           
 MatterBC getInFlux()
           
 SurfDistrib getScOutFlux()
           
 MatterBC getSelfInFlux()
           
 void setB(VectVolField B_)
           
 void setBdOutFlux(SurfDistrib distrib)
           
 void setE(VectVolField E_)
           
 void setInFlux(MatterBC distribs)
           
 void setScOutFlux(SurfDistrib distrib)
           
 void setSelfInFlux(MatterBC distribs)
           
 
Methods inherited from class spis.Vol.VolDistrib.VolDistrib
assessLargestDt, containsOnly, getMoment, getMoment, getMoment, getMoment, getMoment, getName, getParticleType, getVm, isDensityImplicit, mayContain, move, setImplicitDensity, setName, setParticleType
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

VolDistribWithIO

public VolDistribWithIO(VolMesh volMesh,
                        VectVolField E_,
                        VectVolField B_)
Default constructor (IO data must then be defined through setters!).


VolDistribWithIO

public VolDistribWithIO(VolMesh volMesh,
                        MatterBC selfInFlux_,
                        MatterBC inFlux_,
                        SurfDistrib scOutFlux_,
                        SurfDistrib bdOutFlux_,
                        VectVolField E_,
                        VectVolField B_)
Constructor with full IO data.


VolDistribWithIO

public VolDistribWithIO(VolMesh volMesh,
                        MatterBC selfInFlux_,
                        MatterBC inFlux_,
                        SurfDistrib scOutFlux_,
                        SurfDistrib bdOutFlux_,
                        EField eField,
                        VectVolField B_)
Constructor with full IO data, electric field defined as a physical EField (including solver).
It allows to request the local electric field computation from an EField rather than a VolField => better physical interpolation (e.g. taking into account the specificity of wires) instead of the basic linear interpolation done for a VolField (done by the VolMesh object indeed).

Parameters:
volMesh -
selfInFlux_ -
inFlux_ -
scOutFlux_ -
bdOutFlux_ -
B_ -
Method Detail

buildAllInFlux

public void buildAllInFlux()
Builds the list of all the incoming fluxes (as SurfDistrib) including internally- and externally-generated incoming fluxes. It basically invokes the coputeInFlux method of the matterBC selfInField and inField and gathers the resulting fluxes in the array allInFlux.


buildMostAccurateScOutFlux

public abstract void buildMostAccurateScOutFlux()
Builds the most accurate outgoing flux onto spacecraft. It shall e.g. be a PICSurfDistrib for a PICVolDistrib, a LocalMaxwellSurfDistrib for a GlobalMaxwellSurfDistrib...


getBdOutFlux

public SurfDistrib getBdOutFlux()
Returns:
flux from this volume distribution onto external boundary of computation box

getInFlux

public MatterBC getInFlux()
Returns:
externally-generated fluxes coming into this volume distribution (typically secondary electrons form SC, ion source from SC...)

getScOutFlux

public SurfDistrib getScOutFlux()
Returns:
flux from this volume distribution onto spacecraft

getSelfInFlux

public MatterBC getSelfInFlux()
Returns:
internally-generated fluxes coming into this volume distribution (typically boundary fluxes generating this particle distribution)

setBdOutFlux

public void setBdOutFlux(SurfDistrib distrib)
Parameters:
distrib - flux from this volume distribution onto external boundary of computation box

setInFlux

public void setInFlux(MatterBC distribs)
Parameters:
distribs - externally-generated fluxes coming into this volume distribution (typically secondary electrons form SC, ion source from SC...)

setScOutFlux

public void setScOutFlux(SurfDistrib distrib)
Parameters:
distrib - flux from this volume distribution onto spacecraft

setSelfInFlux

public void setSelfInFlux(MatterBC distribs)
Parameters:
distribs - internally-generated fluxes coming into this volume distribution (typically boundary fluxes generating this particle distribution)

getB

public VectVolField getB()
Returns:
reference to the B field used for matter dynamics integration

getE

public VectVolField getE()
Returns:
reference to the E field used for matter dynamics integration

setB

public void setB(VectVolField B_)
Parameters:
B_ - reference to the B field used for matter dynamics integration

setE

public void setE(VectVolField E_)
Parameters:
E_ - reference to the E field used for matter dynamics integration