spis.Surf.InteractModel
Class ReflectionInteractor

java.lang.Object
  extended byspis.Surf.InteractModel.Interactor
      extended byspis.Surf.InteractModel.ReflectionInteractor

public class ReflectionInteractor
extends Interactor

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

Description : a reflection interactor, as a result of an interaction, returns a distribution relfected of the input distribution.
In the reflection process, the distribution can yet be modified: attenuated in number or energy, diffused...
In each ParameterSet (one set per material in ParameterSet[] parameters), which must be of type ParameterSet, parameters are:
0: factor of attenuation of the flux (1.0 => unchanged, 0.0 => no more flux)
1: method of flux attenuation:
method=0 => the weight of all particles is reduced by a number attenuation factor (parameter 0 above),
method=1 => particles are unchanged but only kept with probability = this factor
2: factor of energy attenuation (1.0 => unchanged, 0.0 => particles are re-emitted at reference energy, next parameter)
3: reference energy [eV]: average energy of particles fully accommodated (may be a surface temperature, etc.)
4: method of energy attenuation:
method=0 => the energy of all particles is reduced by an energy attenuation factor (parameter 2 above),
method=1 => each particle energy is reduced by a random factor x of probability law P(x)= x^n (n+1), n being determined to give an average attenuation factor equal to he above parameter 2 (n = (2f-1)/(1-f))
5: diffusion coefficient (0.0 => no diffusion, 1.0 => complete angle diffusion)
6: method of diffusion simulation:
method=0 => a fraction of the particles is diffusively reflected, while the others are specularly reflected (this fraction is the above parameter 5)
method=1 => the peak of velocity is broadened around the specular direction: the result is a linear combination of a normalised vector of sampled following a Lambertian probability and the normalised specular direction, which is next normalised following the energy attenuation law above.
NB: in case of NonPICSurfDistrib (fluid), only parameters 0 and 2 are effective.
NB: a second constructor allows to use a factor of attenuation of the flux depending on particle kinematics (energy/angle...). If needed, this could be extended to other parameters, which would then all be replaced by FuntionOfParticles.

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  FunctionOfParticleNothing diffusion
          function computing diffusion coefficient
private  FunctionOfParticleNothing diffusionMethod
          function returning the diffusion method
private  FunctionOfParticleNothing energyDamping
          function computing energy accommodation
private  FunctionOfParticleNothing energyDampingMethod
          function returning the energy accommodation method Id
private  ScalSurfField matId
          Material Id field
private  ScalSurfField matModId
          Material model Id field
private  FunctionOfParticle numberDamping
          function computing particle number attenuation
private  FunctionOfParticleNothing numberDampingMethod
          function returning the number attenuation method
private  FunctionOfParticleNothing referenceEnergy
          function returning the reference energy for accommodation
private  int refMatModId
          reference material model: the one for which reflections have to be computed (-1 => any of them)
private  int refParticleId
          reference particle Id: the one for which reflections have to be computed (-1 => any of them)
private  PartTable refPartTable
          reference particle table, i.e. the one to which refParticleId refers to
private  ScalSurfField ssf
          buffer ScalSurfField
private  VectSurfField surfNormal
          normal to the impacted surfaces
 
Fields inherited from class spis.Surf.InteractModel.Interactor
inFlux, outFlux, params
 
Constructor Summary
ReflectionInteractor(SurfDistrib inFlux, SurfDistrib outFlux, InteractModel interactModel, ParameterSet[] parameters, ScalSurfField matModId_, ScalSurfField matId_, int refMatModId_, int refParticleId_, PartTable refPartTable_)
          Default constructor
ReflectionInteractor(SurfDistrib inFlux, SurfDistrib outFlux, InteractModel interactModel, ParameterSet[] parameters, ScalSurfField matModId_, ScalSurfField matId_, int refMatModId_, int refParticleId_, PartTable refPartTable_, FunctionOfParticle numberDamping_)
          Constructor with the particle number attenuation depending on particle kinematic parameters: it is passed as an extra function, numberDamping (the parameter 0, the number attenuation parameter not depending on particle kinematics, is unused).
 
Method Summary
 SurfDistrib buildOutFlux(SurfDistrib in, SurfDistrib out)
          If out flux is a null pointer, builds it from in Flux (called at object construction if inFlux is not null, and may be called "manually" if inFlux is defined later).
 void checkFluxes(SurfDistrib in, SurfDistrib out)
          Checks consistency of in and out fluxes (called at object construction if fluxes not null, and at computeInteraction() time in any case).
 void computeInteraction()
          Computes the interaction, not computing the net current in this version
 void initAndCheck()
          initialisations and consistency checks (in particular between fluxes)
 
Methods inherited from class spis.Surf.InteractModel.Interactor
computeInteraction, computeMultipleInteraction, getInFlux, getInteractModel, getOutFlux, getParams, setInFlux, setInteractModel, setOutFlux, setParams
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

matModId

private ScalSurfField matModId
Material model Id field


matId

private ScalSurfField matId
Material Id field


refMatModId

private int refMatModId
reference material model: the one for which reflections have to be computed (-1 => any of them)


refParticleId

private int refParticleId
reference particle Id: the one for which reflections have to be computed (-1 => any of them)


refPartTable

private PartTable refPartTable
reference particle table, i.e. the one to which refParticleId refers to


numberDamping

private FunctionOfParticle numberDamping
function computing particle number attenuation


numberDampingMethod

private FunctionOfParticleNothing numberDampingMethod
function returning the number attenuation method


energyDamping

private FunctionOfParticleNothing energyDamping
function computing energy accommodation


referenceEnergy

private FunctionOfParticleNothing referenceEnergy
function returning the reference energy for accommodation


energyDampingMethod

private FunctionOfParticleNothing energyDampingMethod
function returning the energy accommodation method Id


diffusion

private FunctionOfParticleNothing diffusion
function computing diffusion coefficient


diffusionMethod

private FunctionOfParticleNothing diffusionMethod
function returning the diffusion method


surfNormal

private VectSurfField surfNormal
normal to the impacted surfaces


ssf

private ScalSurfField ssf
buffer ScalSurfField

Constructor Detail

ReflectionInteractor

public ReflectionInteractor(SurfDistrib inFlux,
                            SurfDistrib outFlux,
                            InteractModel interactModel,
                            ParameterSet[] parameters,
                            ScalSurfField matModId_,
                            ScalSurfField matId_,
                            int refMatModId_,
                            int refParticleId_,
                            PartTable refPartTable_)
Default constructor

Parameters:
inFlux - incoming flux (input)
outFlux - outgoing flux (output)
interactModel - interaction model this interactor comes from
parameters - (see this class comments for their meaning)
matModId_ - field with model Id for each surface element
matId_ - field with material Id (within model numbering) for each surface element
refParticleId_ - id of the particles to be handled (all if Id = -1)
refPartTable_ - particle table in which to which refParticleId_ refers to
See Also:
ReflectionInteractor, ReflectionInteractor#checkFluxes()

ReflectionInteractor

public ReflectionInteractor(SurfDistrib inFlux,
                            SurfDistrib outFlux,
                            InteractModel interactModel,
                            ParameterSet[] parameters,
                            ScalSurfField matModId_,
                            ScalSurfField matId_,
                            int refMatModId_,
                            int refParticleId_,
                            PartTable refPartTable_,
                            FunctionOfParticle numberDamping_)
Constructor with the particle number attenuation depending on particle kinematic parameters: it is passed as an extra function, numberDamping (the parameter 0, the number attenuation parameter not depending on particle kinematics, is unused).

Parameters:
inFlux - incoming flux (input)
outFlux - outgoing flux (output)
interactModel - interaction model this interactor comes from
parameters - (see this class comments for their meaning)
matModId_ - field with model Id for each surface element
matId_ - field with material Id (within model numbering) for each surface element
refParticleId_ - id of the particles to be handled (all if Id = -1)
refPartTable_ - particle table in which to which refParticleId_ refers to
numberDamping_ - function returning the number attenuation coefficient
See Also:
ReflectionInteractor, ReflectionInteractor#checkFluxes()
Method Detail

initAndCheck

public void initAndCheck()
initialisations and consistency checks (in particular between fluxes)


buildOutFlux

public SurfDistrib buildOutFlux(SurfDistrib in,
                                SurfDistrib out)
If out flux is a null pointer, builds it from in Flux (called at object construction if inFlux is not null, and may be called "manually" if inFlux is defined later).
Rules are:
- if inFlux is a PICSurfDistrib => outFlux is a PICSurfDistrib.
- MultipleSurfDistrib in => MultipleSurfDistrib out (computation then split at super class level)
- anything else in => FluidSurfDistrib out (computation done through getMoment() in that case, including temperature computation if outFlux is a LocalMaxwellSurfDistrib)


checkFluxes

public void checkFluxes(SurfDistrib in,
                        SurfDistrib out)
Checks consistency of in and out fluxes (called at object construction if fluxes not null, and at computeInteraction() time in any case). Conditions are:
- PICSurfDistrib in => PICSurfDistrib out.
- MultipleSurfDistrib in => MultipleSurfDistrib out (computation then split at super class level) with the same rule for each of the multiple fluxes
- anything else in => FluidSurfDistrib out (computation done through getMoment() in that case, including temperature computation if outFlux is a LocalMaxwellSurfDistrib)


computeInteraction

public void computeInteraction()
Description copied from class: Interactor
Computes the interaction, not computing the net current in this version

Specified by:
computeInteraction in class Interactor