spis.Vol.VolDistrib
Class GlobalMaxwellBoltzmannVolDistrib

java.lang.Object
  extended byspis.Vol.VolDistrib.VolDistrib
      extended byspis.Vol.VolDistrib.VolDistribWithIO
          extended byspis.Vol.VolDistrib.AnalyticVolDistrib
              extended byspis.Vol.VolDistrib.GlobalMaxwellBoltzmannVolDistrib

public class GlobalMaxwellBoltzmannVolDistrib
extends AnalyticVolDistrib

Class Name : GlobalMaxwellBoltzmannVolDistrib
Project ref : SPIS project
File name : GlobalMaxwellBoltzmannVolDistrib.java
File type : class
Copyright : ONERA, 2 Av. E. Belin, 31055 Toulouse cedex, France http://www.onecert.fr
Status : under development
Creation : Feb 26, 2004
Modification :

Description : Maxwell-Boltzmann distribution
Density is given analytically:
- dens * exp(-q*pot/temp) for positive (-q*pot/temp)
- dens * (1+q*pot/temp) for positive (q*pot/temp)
where q is the particle charge.

Versions and anomalies correction :

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


Version:
0.1
Author:
JF Roussel

Field Summary
private  ScalSurfField bdDens
          buffer boundary density
private  ScalFunctionOfScal boltzDens
          density function dens(pot)
private  float dens
          density
private  ScalVolField densVolField
          stored density, which is updated by the generic move() call, or by a updateDistrib() call, specific to this derived class.
private  PotVectVolField E
          electric field (as a potential)
private  Part part
          particle type
private  ScalSurfField scDens
          buffer spacecraft density
private  float temp
          temperature
private  float[] velo
          velocity
 
Fields inherited from class spis.Vol.VolDistrib.VolDistribWithIO
allInFlux, B, bdOutFlux, eField, inFlux, scOutFlux, selfInFlux
 
Fields inherited from class spis.Vol.VolDistrib.VolDistrib
vm
 
Constructor Summary
GlobalMaxwellBoltzmannVolDistrib(GlobalParameter[] globalParams, LocalParameter[] localParams, java.lang.String option, VolMesh vm, VectVolField E_, VectVolField B)
          Constructor based on UI-defined parameters
GlobalMaxwellBoltzmannVolDistrib(VolMesh vm, float dens_, float[] velocity, float temperature, Part particleType, PotVectVolField E_, VectVolField B)
           
GlobalMaxwellBoltzmannVolDistrib(VolMesh vm, float dens_, float[] velocity, float temperature, Part particleType, SurfDistrib scOutFlux_, SurfDistrib bdOutFlux_, VectVolField E_, VectVolField B_)
          Constructor with IO data.
 
Method Summary
 void buildMostAccurateScOutFlux()
          Builds the most accurate outgoing flux onto spacecraft.
 boolean containsOnly(Part particletype)
           
 float getDens()
           
 void getMoment(VolField mom, int order, int charge, int mass)
          normalised and deviation flags omitted: they are set to their default value, 0
 Part getPart()
           
 PotVectVolField getPotVectVolFieldE()
           
 float getTemp()
           
 float[] getVelo()
           
 boolean mayContain(Part particletype)
           
 void move(float dt)
          The move method of this analytic density simply does the following:
it computes the density and surface fluxes (analytic function of potential) and stores them
 void setDens(float f)
           
 void setE(VectVolField E_)
          Defines electric field, overriding VolDistribWithIO.setE method to enforce the E field to be stored as a potential
 void setPart(Part part_)
           
 void setTemp(float temp_)
           
 void setVelo(float[] velo_)
           
 void updateDistrib(ScalVolField pot)
          Update the density of this distribution based on this potential (regular units [#/node]
private  void updateDistribPerVolume(ScalVolField pot)
          Update the density of this distribution based on this potential (in physical but unusual units [#/m3]
 void updateSurfDistrib(ScalSurfField surfDens, SurfDistrib surfDistrib, float dt)
           
 
Methods inherited from class spis.Vol.VolDistrib.AnalyticVolDistrib
assessLargestDt
 
Methods inherited from class spis.Vol.VolDistrib.VolDistribWithIO
buildAllInFlux, getB, getBdOutFlux, getE, getInFlux, getScOutFlux, getSelfInFlux, setB, setBdOutFlux, setInFlux, setScOutFlux, setSelfInFlux
 
Methods inherited from class spis.Vol.VolDistrib.VolDistrib
checkMomentConsistentWithOrder, getMoment, getMoment, getMoment, getMoment, getName, getParticleType, getVm, isDensityImplicit, setImplicitDensity, setName, setParticleType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

dens

private float dens
density


velo

private float[] velo
velocity


temp

private float temp
temperature


boltzDens

private ScalFunctionOfScal boltzDens
density function dens(pot)


part

private Part part
particle type


E

private PotVectVolField E
electric field (as a potential)


densVolField

private ScalVolField densVolField
stored density, which is updated by the generic move() call, or by a updateDistrib() call, specific to this derived class.


scDens

private ScalSurfField scDens
buffer spacecraft density


bdDens

private ScalSurfField bdDens
buffer boundary density

Constructor Detail

GlobalMaxwellBoltzmannVolDistrib

public GlobalMaxwellBoltzmannVolDistrib(VolMesh vm,
                                        float dens_,
                                        float[] velocity,
                                        float temperature,
                                        Part particleType,
                                        PotVectVolField E_,
                                        VectVolField B)
Parameters:
vm -
dens_ -
velocity -
temperature -
particleType -
E_ -
B -

GlobalMaxwellBoltzmannVolDistrib

public GlobalMaxwellBoltzmannVolDistrib(VolMesh vm,
                                        float dens_,
                                        float[] velocity,
                                        float temperature,
                                        Part particleType,
                                        SurfDistrib scOutFlux_,
                                        SurfDistrib bdOutFlux_,
                                        VectVolField E_,
                                        VectVolField B_)
Constructor with IO data.

Parameters:
vm -
dens_ -
velocity -
temperature -
particleType -
scOutFlux_ -
bdOutFlux_ -
E_ -
B_ -

GlobalMaxwellBoltzmannVolDistrib

public GlobalMaxwellBoltzmannVolDistrib(GlobalParameter[] globalParams,
                                        LocalParameter[] localParams,
                                        java.lang.String option,
                                        VolMesh vm,
                                        VectVolField E_,
                                        VectVolField B)
Constructor based on UI-defined parameters

Parameters:
globalParams -
localParams -
option -
vm -
B -
See Also:
VolDistribWithIO for specification of this type of constructor
Method Detail

move

public void move(float dt)
The move method of this analytic density simply does the following:
it computes the density and surface fluxes (analytic function of potential) and stores them

Specified by:
move in class VolDistrib
See Also:
spis.Vol.VolDistrib.VolDistrib#move(float, int, spis.Surf.SurfDistrib.SurfDistrib[], spis.Surf.SurfDistrib.SurfDistrib, spis.Surf.SurfDistrib.SurfDistrib, spis.Vol.VolField.VolField, spis.Vol.VolField.VolField)

updateDistrib

public void updateDistrib(ScalVolField pot)
Update the density of this distribution based on this potential (regular units [#/node]

Parameters:
pot -

updateDistribPerVolume

private void updateDistribPerVolume(ScalVolField pot)
Update the density of this distribution based on this potential (in physical but unusual units [#/m3]

Parameters:
pot -

updateSurfDistrib

public void updateSurfDistrib(ScalSurfField surfDens,
                              SurfDistrib surfDistrib,
                              float dt)

getMoment

public void getMoment(VolField mom,
                      int order,
                      int charge,
                      int mass)
Description copied from class: VolDistrib
normalised and deviation flags omitted: they are set to their default value, 0

Specified by:
getMoment in class VolDistrib
See Also:
VolDistrib.getMoment(VolField, int, int, int, int, int)

getDens

public float getDens()
Returns:

getPotVectVolFieldE

public PotVectVolField getPotVectVolFieldE()
Returns:

getPart

public Part getPart()
Returns:

getTemp

public float getTemp()
Returns:

getVelo

public float[] getVelo()
Returns:

setE

public void setE(VectVolField E_)
Defines electric field, overriding VolDistribWithIO.setE method to enforce the E field to be stored as a potential

Overrides:
setE in class VolDistribWithIO
Parameters:
E_ - reference to the E field used for matter dynamics integration

containsOnly

public boolean containsOnly(Part particletype)
Specified by:
containsOnly in class VolDistrib
Parameters:
particletype -
Returns:
true if this VolDistrib only contains this type of particles

mayContain

public boolean mayContain(Part particletype)
Specified by:
mayContain in class VolDistrib
Parameters:
particletype -
Returns:
true if this VolDistrib may contain this type of particles (among others, or not)

buildMostAccurateScOutFlux

public void buildMostAccurateScOutFlux()
Description copied from class: VolDistribWithIO
Builds the most accurate outgoing flux onto spacecraft. It shall e.g. be a PICSurfDistrib for a PICVolDistrib, a LocalMaxwellSurfDistrib for a GlobalMaxwellSurfDistrib...

Specified by:
buildMostAccurateScOutFlux in class VolDistribWithIO

setDens

public void setDens(float f)
Parameters:
f -

setPart

public void setPart(Part part_)

setTemp

public void setTemp(float temp_)

setVelo

public void setVelo(float[] velo_)