Last SPIS / NUM developments J.-F. Roussel, F. Rogier, D. Volpert ONERA / DESP
Outline 1D and 2D elements (wires and thin surfaces) Spacecraft equivalent circuit Material interactions Several particle sources How to build your own classes (e.g. a particle source)
1D and 2D elements (wires and thin surfaces) Theory: Singularity close to wire or thin surface edge Substract analytical singularity (f ~ ln(r) for wires) Theory explained at last SPINE meeting in June Accuracy testing:
Test case number 1:refined mesh around the wire Mesh on the wire skin General view: 3D mesh including the wire 2D cut of the mesh Cell number : 170000
Test case number 2: wire approximation 2D cut of the mesh General view Faces close to the wire Cell number :50 000
1D and 2D elements: example: Box with two wires
Spacecraft equivalent circuit Principle: Coatings => “continuous components”: R and C spread all over surfaces “Discrete components” can be added between electric super nodes Documented in HowTo page spacecraft circuit.html Parameters: Coatings: material conductivities and RIC Discrete components: circuit file name and syntax + Monitoring: Potentials, collected current, emitted current Per electric (super) node, and total To UI (V(t) and I(t) plots), and to spreadsheets: potentials.txt, collectedCurrents.txt, emittedCurrents.txt
Material interactions Material interaction modelling was completed: Radiation induced conductivity Secondary electron emission (SEE) under proton impact Surface conductivity (not really an interaction) NB: already available in June: SEE from electron iùpact, photo-emission No details here, more relevant to WG3 Control from UI: Global on/off flags (local flags not ops) Then local data = material properties (“NASCAP” properties) Cf Controlling NUM from UI.html#Interactions and Controlling NUM from UI.html#_Local_parameters
Several particle sources Principle: Define several different sources on spacecraft from UI Community request, typically a thruster + neutraliser… 4 sources defined, easy to have more (only modify file SpisUI/DefaultValues/defaultGlobalParam.py) In practice: Different global parameters for each source: sourceFlag, sourceType, sourceParticleType for each source Supported types as of today: LocalMaxwellSurfDistrib (0 Mach Maxwellian) MaxwellianThruster (large Mach) Needs to be enriched! Only one set of local parameters: sourceId switches locally between the 4 sources, and sourceCurrent, sourceTemp, sourceMach give local parameters
Building your own classes Principle: Object Oriented approach versus classical programming: Follow a class model, i.e. derive an abstract class (instantiate its abstract methods) Automatic integration versus manual integration: Use a standard constructor so that it can be invoked automatically (basically with UI-defined global and local parameters) In practice: plug and play: Write your class Make it accessible (include it spis.jar in the right package) Type its name in UI As opposed to manual integration where you had to modify some piece of old code to call your new code Documented in Writing UI-supported classes.html
Building your own classes: examples Ex. 1: source of particles defined by a surface velocity distribution derive your class from NonPICSurfDistrib: implement abstract methods, and call NonPICSurfDistrib constructor: provide a SurfSampler to NonPICSurfDistrib constructor void getMoment(SurfField mom, int order, int charge, int mass, int time) float assessTypicalVelo() implement specific constructor based on UI global and local parameters, similar to LocalMaxwellSurfDistrib(GlobalParameter[] globalParams, LocalParameter[] localParams, java.lang.String option, SurfMesh sm, java.lang.Integer sourceId) MaxwellianThruster(GlobalParameter[] globalParams, LocalParameter[] localParams, java.lang.String option, SurfMesh sm, java.lang.Integer sourceId) Put it in spis.jar (SpisNUm folder) in spis.Surf.SurfDistrib package In UI, set global parameter e.g. "sourceType1" = "MyNewSource" No piece of code to modify
Building your own classes: examples Other "plug and play" classes: Particle populations (electronDistrib, ionDistrib, electronDistrib2, ionDistrib2) Derive from: VolDistribWithIO Constructor: (GlobalParameter[] globalParams, LocalParameter[] localParams, java.lang.String option, VolMesh vm, VectVolField E, VectVolField B) Exist as of today: PICVolDistrib , GlobalMaxwellBoltzmannVolDistrib Environment (environmentType) Derive from: Environment Constructor: (GlobalParameter[] globalParams, LocalParameter[] localParams, java.lang.String option, VolMesh vm, EField E, VectVolField B) Exist as of today: BiMaxwellianEnvironment Other non "plug and play" class: Potentially any class In practice, can be interesting: MaterialModel Interactor ... Need specific integration (e.g. material model id = 2 => such MaterialModel)