spis.Top.SC
Class RCCabsSC

java.lang.Object
  extended byspis.Top.SC.SC
      extended byspis.Top.SC.InteractSC
          extended byspis.Top.SC.RCCabsSC

public class RCCabsSC
extends InteractSC

Class Name : RCCabsSC
Project ref : SPIS project
File name : RCCabsSC.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 : Spacecraft with: .
- its circuit described by an RC network + absolute capacitance as in RCCabsCirc.
- its geometry described by an SurfMesh sm.
- data and services to map CircField from/to SurfField, in particular automated circuit+mapping generation.
The data describing the circuit and the mapping must not be dissociated (circ and map, mapN is redundant and can be derived from map and geometry and is automatically recomputed as soon as neeed)

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
RCCabsSC(SurfMesh surfMesh, MaterialModel[] materialModels, ScalSurfField materialModelId, ScalSurfField materialId, float Cabsol)
          Default constructor with minimal data to allow initialisations
RCCabsSC(SurfMesh surfMesh, MaterialModel[] materialModels, ScalSurfField materialModelId, ScalSurfField materialId, float Cabsol, ScalSurfField elecSuperNodeId)
          Constructor with minimal data plus group data.
RCCabsSC(SurfMesh surfMesh, MaterialModel[] materialModels, ScalSurfField materialModelId, ScalSurfField materialId, ScalSurfField thickness, int surfConductFlag, ScalSurfField surfConductFlagField, int volConductFlag, ScalSurfField volConductFlagField, int inducedConductFlag, ScalSurfField inducedConductFlagField, ScalSurfField temperature, ScalSurfField elecSuperNodeId, ScalSurfField wireElecSuperNodeId, float Cabsol, java.lang.String circuitFilename)
          Full constructor
 
Method Summary
 void defineCoatingConductance(ScalSurfField conduct)
          Sets the values of the conductances between surface coatings and their underlying ground (their electric super node) to the value conduct.
 void deriveCircuitAndMap()
          Version of deriveCircuitAndMap without parameters: selects the most complete version depending on parameter allocation:
- deriveCircuitAndMap(Cabs, elecSuperNodeId, elecComponents) if possible
- then deriveCircuitAndMap(Cabs, elecSuperNodeId) if possible
- and eventually deriveCircuitAndMap(Cabs)
 void deriveCircuitAndMap(float Cabs)
          Automatically derives an equivalent electrical circuit for the spacecraft and mapping from surface to circuit.
 void deriveCircuitAndMap(float Cabsol, ScalSurfField elecSuperNodeId, ScalSurfField wireElecSuperNodeId)
          Derives an equivalent electrical circuit for the spacecraft using electric group information (or electrical super node).
 void deriveCircuitAndMap(float Cabsol, ScalSurfField elecSuperNodeId, ScalSurfField wireElecSuperNodeId, java.util.Vector elecComponents)
          Derives an equivalent electrical circuit for the spacecraft using group information and extra electric components.
 ScalSurfField deriveCoatingCapa()
           
 ScalSurfField deriveCoatingConduct()
           
 ScalSurfField deriveCoatingSurfaceConduct()
           
 void getCircAndMap(Circ circuit, Matrix mapSurf)
          Gets circuit and map (through pointer/reference, no copy).
 float getGroundPot()
          Returns the spacecraft ground potential.
 void getMapGC(Matrix mapSurf, Matrix G, Matrix C)
          Gets map, and G and C matrices (through pointer).
 void getMapGC(Matrix mapSurf, Matrix G, Matrix C, float Cabsol)
          Gets map, and G and C matrices and Cabs (through pointer).
 int getMaxSuperNodeId()
          Returns the maximum super node Id in use (will be the dimension of the array returned by mapToSuperNode method.
 ScalSurfField getPot()
          Returns the SC surface potential.
 RCCabsCirc getRCCabsCirc()
          Rerturns SC equivalent circuit.
 float[] getSuperNodePot()
           
 void integrate(float dt, ScalSurfField NetCur)
          performs one step of time integration over time dt, based on the net current collected on surfaces NetCur.
 void integrate(float dt, ScalSurfField netCur, ScalSurfField wireNetCur)
          performs one step of time integration over time dt, based on the net current collected on surfaces, netCur, and on 1D wires, wireNetCur.
 void mapCircToSurf(CircField cf, ScalSurfField sf, int flag)
          Maps a circuit field onto a scalar surface field.
 void mapCircToWire(CircField cf, ScalSurfField sf)
          Maps a circuit field onto an edge-centred surface field living on 1D wires only.
 void mapSurfToCirc(ScalSurfField sf, CircField cf, int flag)
          Maps a scalar surface field onto a circuit field.
 float[] mapToSuperNode(ScalSurfField sf)
          Compute the paratial sum of ScalSurfField sf for each electric super node.
 void mapWireToCirc(ScalSurfField sf, CircField cf)
          Maps an edge-centred surface field living on wire elements onto a circuit field.
 void setCircAndMap(RCCabsCirc circuit, Matrix mapSurf)
          Sets circuit and map (through pointer/reference, no copy).
 void setMapGC(Matrix mapSurf, Matrix G, Matrix C)
          Sets map, and G and C matrices (through pointer).
 void setPot(ScalSurfField potential)
          Sets the SC surface potential.
 
Methods inherited from class spis.Top.SC.InteractSC
addInteractor, computeInteraction, computeInteraction, getInteractor, getInteractorNb, getMatMod, setInteractor, setMatMod, turnOnPhotoEmission, turnOnPhotoEmissionDeprecated, turnOnPhotoEmissionDeprecated, turnOnSEEE
 
Methods inherited from class spis.Top.SC.SC
getSm
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RCCabsSC

public RCCabsSC(SurfMesh surfMesh,
                MaterialModel[] materialModels,
                ScalSurfField materialModelId,
                ScalSurfField materialId,
                float Cabsol)
Default constructor with minimal data to allow initialisations

Parameters:
surfMesh - surface Mesh
materialModels -
materialModelId -
materialId -
Cabsol - absolute capacitance of the spacecraft

RCCabsSC

public RCCabsSC(SurfMesh surfMesh,
                MaterialModel[] materialModels,
                ScalSurfField materialModelId,
                ScalSurfField materialId,
                float Cabsol,
                ScalSurfField elecSuperNodeId)
Constructor with minimal data plus group data. A common mass will be generated for each group, all masses connected by default, but the user can edit the links between the masses.
NB: group information not used yet (TBW).


RCCabsSC

public RCCabsSC(SurfMesh surfMesh,
                MaterialModel[] materialModels,
                ScalSurfField materialModelId,
                ScalSurfField materialId,
                ScalSurfField thickness,
                int surfConductFlag,
                ScalSurfField surfConductFlagField,
                int volConductFlag,
                ScalSurfField volConductFlagField,
                int inducedConductFlag,
                ScalSurfField inducedConductFlagField,
                ScalSurfField temperature,
                ScalSurfField elecSuperNodeId,
                ScalSurfField wireElecSuperNodeId,
                float Cabsol,
                java.lang.String circuitFilename)
Full constructor

Parameters:
surfMesh -
materialModels -
materialModelId -
materialId -
thickness -
surfConductFlag -
surfConductFlagField -
volConductFlag -
volConductFlagField -
inducedConductFlag -
inducedConductFlagField -
temperature -
elecSuperNodeId -
Cabsol -
circuitFilename -
Method Detail

integrate

public void integrate(float dt,
                      ScalSurfField NetCur)
performs one step of time integration over time dt, based on the net current collected on surfaces NetCur.
It basically consists in a call to the Integrate method of the spacecraft circuit between two mappings.

Specified by:
integrate in class SC
Parameters:
dt -

integrate

public void integrate(float dt,
                      ScalSurfField netCur,
                      ScalSurfField wireNetCur)
performs one step of time integration over time dt, based on the net current collected on surfaces, netCur, and on 1D wires, wireNetCur.
It basically consists in a call to the Integrate method of the spacecraft circuit between two mappings.

Parameters:
dt -
netCur -
wireNetCur -

mapSurfToCirc

public void mapSurfToCirc(ScalSurfField sf,
                          CircField cf,
                          int flag)
Maps a scalar surface field onto a circuit field.
It is mostly used to map collected intensities from surface to circuit. It is thus likely to be only needed for surface-centred surface fields. If flag is set to 1 the sum is computed (for extensive values such as a current), if it is set to 0 the average is computed (for intensive values such as a potential). For the above reason, only the sum is likely to be needed.
It basically amounts to multiplying the SurfField by the mapping matrix map.

Parameters:
sf -
cf -
flag -

mapWireToCirc

public void mapWireToCirc(ScalSurfField sf,
                          CircField cf)
Maps an edge-centred surface field living on wire elements onto a circuit field.
It is mostly used to map collected intensities from wire to circuit. The sum is computed, since it is to be used for extensive values such as a current.
It basically amounts to multiplying the SurfField by the mapping matrix wireMap.
NB: it is a simplified version of mapSurfToCirc for 1D wires (instead of 2D surfaces)

Parameters:
sf -
cf -
See Also:
mapSurfToCirc(ScalSurfField, CircField, int)

mapCircToSurf

public void mapCircToSurf(CircField cf,
                          ScalSurfField sf,
                          int flag)
Maps a circuit field onto a scalar surface field.
If the flag is set to 1 for an extensive quantity the circuit-values are split between the related surface-values (the total is conserved) whereas for intensive values a flag=0 results in a copy of the circuit-values onto surface-values.
It is mostly used to map potentials back from circuit to surface. It is thus likely to be only needed for node-centred surface fields and flag=0.
It basically amounts to multiplying the CircField by the (transposed) mapping matrix map.

Parameters:
cf -
sf -
flag -

mapCircToWire

public void mapCircToWire(CircField cf,
                          ScalSurfField sf)
Maps a circuit field onto an edge-centred surface field living on 1D wires only.
To be used for intensive values (a copy of the circuit-values are done onto surface-values).
It is mostly used to map potentials back from circuit to wires.
It basically amounts to multiplying the CircField by the (transposed) mapping matrix wireMapT.
NB: it is a simplified version of mapCircToSurf for 1D wires (instead of 2D surfaces)

Parameters:
cf -
sf -
See Also:
mapCircToSurf(CircField, ScalSurfField, int)

deriveCircuitAndMap

public void deriveCircuitAndMap(float Cabs)
Automatically derives an equivalent electrical circuit for the spacecraft and mapping from surface to circuit.
The results of this operation are:
- the circuit description (network of capacitance and resistors) in circ
- the map map (mapN can be later derived from map by deriveOtherMaps())
and they are obtained from:
- geometric information (topology, dimensions...) in sm
- physical properties (coating type and thickness...) and material property list
Although automatic, a few control parameters could be allowed.
A different mapping matrix is needed for each centring of the SurfField and CircField (node, surface, etc.). The mapping between fields of same centering is simple and mostly involves a grouping of mesh surfaces into a single circuit node. The mapping between fields of different centering involves some interpolation. For now, Node- and Surface-centered SurfField only are handled in mapN and map. In this version the circuit nodes were systematically considered as centered on surfaces (not nodes) of the surface mesh since:
- it is more natural from a material property point of view: real coatings are on surfaces, not on nodes, and it is not obvious to know which material properties to use at material boundaries.
- the interpolation at boundaries between different materials or spacecraft faces will be more realistic:
- with surface-centred circuit nodes, the current collection is immediate, and the interpolation is to be done from the circuit potentials (on the surfaces) to the surface potentials (node-centred for most Poisson solvers), which simply yields a smoothing of potential at material/face boundaries
- with node-centred circuit nodes, the transfer to node-centred surface potential would be immediate, but the interpolation of currents collected on surfaces to nodes would cause serious problems: the current collected on different materials or surfaces can be very different (sunlit or not, very different secondary emission...) and would lead to curious results at boundaries.

NB: in case of a structured volume mesh, the physical SC surfaces bearing the circuit are different from the surface mesh boundary of the volume mesh. The mapping between a CircField and such a SurfField must thus involve a space interpolation.

Parameters:
Cabs - SC absolute capacitance

deriveCircuitAndMap

public void deriveCircuitAndMap(float Cabsol,
                                ScalSurfField elecSuperNodeId,
                                ScalSurfField wireElecSuperNodeId)
Derives an equivalent electrical circuit for the spacecraft using electric group information (or electrical super node).
A different electrical ground is created for each group (in the simpler version without group information, only one global SC ground is generated). It allows the user to later disconnect the gound of a group (e.g. a solar array) from the global SC ground.

Parameters:
Cabsol - SC absolute capacitance
elecSuperNodeId - Id of the electric superNode each surface elemnt belongs to

deriveCircuitAndMap

public void deriveCircuitAndMap(float Cabsol,
                                ScalSurfField elecSuperNodeId,
                                ScalSurfField wireElecSuperNodeId,
                                java.util.Vector elecComponents)
Derives an equivalent electrical circuit for the spacecraft using group information and extra electric components.
A different electrical ground is created for each group (in the simpler version without group information, only one global SC ground is generated). It allows the user to later disconnect the gound of a group (e.g. a solar array) from the global SC ground.
Electric components are plugged between electric nodes.

Parameters:
Cabsol - SC absolute capacitance
elecSuperNodeId - Id of the electric superNode each surface elemnt belongs to
wireElecSuperNodeId - Id of the electric superNode each surface elemnt belongs to
elecComponents - components (RLCV) between electric nodes

deriveCircuitAndMap

public void deriveCircuitAndMap()
Version of deriveCircuitAndMap without parameters: selects the most complete version depending on parameter allocation:
- deriveCircuitAndMap(Cabs, elecSuperNodeId, elecComponents) if possible
- then deriveCircuitAndMap(Cabs, elecSuperNodeId) if possible
- and eventually deriveCircuitAndMap(Cabs)


defineCoatingConductance

public void defineCoatingConductance(ScalSurfField conduct)
Sets the values of the conductances between surface coatings and their underlying ground (their electric super node) to the value conduct. Used to set induced conductivity. If a coating has been declared as a conductor at initial buildup of conductivity and mapping matrices, the value passed here won't be taken into account (it can't be made an insulator again because the matrices structure is not modified, only the values)

Specified by:
defineCoatingConductance in class InteractSC
Parameters:
conduct -

deriveCoatingCapa

public ScalSurfField deriveCoatingCapa()

deriveCoatingConduct

public ScalSurfField deriveCoatingConduct()

deriveCoatingSurfaceConduct

public ScalSurfField deriveCoatingSurfaceConduct()

mapToSuperNode

public float[] mapToSuperNode(ScalSurfField sf)
Compute the paratial sum of ScalSurfField sf for each electric super node.
NB: currently limited to the same centring as the superNodeId field present in this SC (2 = on surfaces) and to extensive values (currents typically) since a sum is performed

Parameters:
sf -
Returns:
each super node value (as a float[])

getSuperNodePot

public float[] getSuperNodePot()
Returns:
the potential of each super node value (as a float[])

getPot

public ScalSurfField getPot()
Returns the SC surface potential.

Specified by:
getPot in class SC

getGroundPot

public float getGroundPot()
Returns the spacecraft ground potential.

Specified by:
getGroundPot in class SC

setPot

public void setPot(ScalSurfField potential)
Sets the SC surface potential.


setCircAndMap

public void setCircAndMap(RCCabsCirc circuit,
                          Matrix mapSurf)
Sets circuit and map (through pointer/reference, no copy).


getRCCabsCirc

public RCCabsCirc getRCCabsCirc()
Rerturns SC equivalent circuit.


getCircAndMap

public void getCircAndMap(Circ circuit,
                          Matrix mapSurf)
Gets circuit and map (through pointer/reference, no copy).


setMapGC

public void setMapGC(Matrix mapSurf,
                     Matrix G,
                     Matrix C)
Sets map, and G and C matrices (through pointer).


getMapGC

public void getMapGC(Matrix mapSurf,
                     Matrix G,
                     Matrix C)
Gets map, and G and C matrices (through pointer).


getMapGC

public void getMapGC(Matrix mapSurf,
                     Matrix G,
                     Matrix C,
                     float Cabsol)
Gets map, and G and C matrices and Cabs (through pointer).


getMaxSuperNodeId

public int getMaxSuperNodeId()
Returns the maximum super node Id in use (will be the dimension of the array returned by mapToSuperNode method.

Returns:
Returns the maxSuperNodeId.