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

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, getInFlux, getInteractModel, getOutFlux, getParams, setInFlux, setInteractModel, setOutFlux, setParams
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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