MULASSIS
Model API name: mulassis
Multi-Layer Shielding Simulation Software (MULASSIS)
Version: v1.27
Input group: mulassis / multiplicity: one
macro_inputs
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
macro | MULASSIS macro text |
|
text | |
aux_files | MULASSIS additional macro files |
|
text |
Source particle definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
particleType | Incident particle type |
proton=Proton e-=Electron |
proton | number |
fluxMultiplier | Flux multiplier [seconds], converts fluxes (#/s) to fluence, e.g. 1 year is 31536000 (365*24*3600) |
|
1 | number |
Source biasing definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
useEnergyBiasing | Uses energy biasing with a histogram spectrum. |
1=Yes 0=No |
0 | number |
Source Spectral definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
environmentForm | Spectral form of an analytical spectrum. |
mono=Mono-energetic linear=Linear: F(E)=A E + B power_law=Power law: F(E)= A E^Alpha exponential=Exponential: F(E)=A exp(-E/E0) |
mono | text |
monoenergeticParticleEnergy |
Mono-energetic energy
Used if environmentForm==mono |
|
100 | energy |
monoenergeticParticleEnergyUnit | Energy unit for the mono Energetic Particle Energy. |
eV=electron volt keV=kilo electron volt MeV=mega electron volt GeV=giga electron volt TeV=tera electron volt PeV=peta electron volt |
MeV | number |
monoenergeticParticleFlux |
Fluence/(Flux) intensity
Used if environmentForm==mono |
|
1.0 | number |
minimumEnergy |
Minimum energy
Used if environmentForm==linear or environmentForm==power_law or environmentForm==exponential |
|
0.0 | energy |
maximumEnergy |
Maximum energy
Used if environmentForm==linear or environmentForm==power_law or environmentForm==exponential |
|
0.0 | energy |
linearGradient |
Linear gradient (A)
Used if environmentForm==linear |
|
0.0 | number |
linearIntercept |
Linear intercept (B)
Used if environmentForm==linear |
|
0.0 | number |
powerLawAlpha |
Power law exponent (Alpha)
Used if environmentForm==power_law |
|
0.0 | number |
exponentialGradient |
Exponential gradient
Used if environmentForm==exponential |
|
0.0 | energy |
exponentialE0 |
Exponential exponent factor (E0)
Used if environmentForm==exponential |
|
0.0 | energy |
Source angular definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
particleAngularDistribution | Angular distribution |
cos=Omni-directional iso=Point source planar=Parallel beam |
cos | number |
minimumAngle |
Minimum angle
Used if particleAngularDistribution==cos or particleAngularDistribution==iso |
|
0.0 | plane_angle |
maximumAngle |
Maximum angle
Used if particleAngularDistribution==cos or particleAngularDistribution==iso |
|
90.0 | plane_angle |
incidentAngle |
Incident angle measure from the normal to the surface.
Used if particleAngularDistribution==planar |
|
0.0 | plane_angle |
Geometry definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
geometryType | Geometry definition |
default=Default user-defined=User-defined |
default | text |
geometryShape | Geometry definition |
planar_slab=Planar slab sphere=Sphere |
planar_slab | text |
Analysis definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
analysisType | Analysis type |
fluence=Fluence tid=Total ionising dose |
fluence | text |
fluenceAnalysisParticles |
Particle(s) type for fluence analysis
Used if analysisType==fluence |
proton=Proton e-=Electron |
proton | text |
fluenceOutputUnits |
Output units
Used if analysisType==fluence |
cm2=cm^-2 m2=m^-2 |
cm2 | text |
fluenceDensityType |
Fluence density type
Used if analysisType==fluence |
omni=Omni-directional planar=Planar |
omni | text |
fluenceAnalysisBoundaries |
Boundaries between layers for fluence analysis
Used if analysisType==fluence |
|
all | text |
energyBinningMode |
Energy binning mode
Used if analysisType==fluence |
default=Default linear=Linear logarithmic=Logarithmic |
default | text |
angleBinningMode |
Angle binning mode
Used if analysisType==fluence |
default=Default linear=Linear |
default | text |
TIDOutputUnits |
TID Output units
Used if analysisType==tid |
rad=Rad linear=Linear |
rad | text |
TIDAnalysisLayers |
Layers for energy deposition/total ionising dose analysis
Used if analysisType==tid |
|
all | text |
Physics definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
physicsScenario | Geant4 Physics list to use. |
em=EM interactions using standard G4EM em_opt3=EM interactions using standard G4EM_opt3 & DecayPhysics em_pen=EM interactions using the G4EM Penelope physics leem=EM interactions using the G4EM Livermore physics bertini=G4 EM and Bertini hadron physics binary=G4 EM and binary hadron physics QBBC=recommended for medical and space physics simulations. radioactivedecay=G4EM livermore physics + binary + Radioactive Decay. |
QBBC | number |
globalCutsMicrons |
Global cuts-in-range. The distance below which secondary particles will not be generated and/or tracked. |
|
1 | length |
simulation definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
numberPrimaryParticles | Number of primary particles |
|
100 | number |
cpuLimit | Number of CPU seconds available to simulation. |
|
600 | number |
Input group: input_spectra / multiplicity: many
input_spectra
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
spectrum | NoM Results variable from Model |
|
1.0 | energy_flux_spectrum |
resultName | Spectrum result name from model |
|
none | text |
toflux | Agregation period (if fluence values are specified) |
|
spectrum | duration |
Input group: layers / multiplicity: many
Layer definition
Input | Description | Valid values | Default | Quantity |
---|---|---|---|---|
layerThickness | Thickness of layer |
|
1.0 | length |
layerMaterial ( Material library ) | material ID from library. |
|
vacuum | text |
thicknessUnit | Thickness unit |
|
mm | length |
layerCutMicrons |
Layer cut (in microns) Typical value is 0.1×layerThickness. |
|
1.0 | length |
|
None
Model example
# coding=utf-8
from os import path
from nom_client.nom_client import NoMClient
_here = path.abspath(path.dirname(__file__))
# -------------------------------------------------------------------------------
# Example to show importing trapped proton and solar proton spectra into Mulassis
#
nom_client = NoMClient(project_name="MULASSIS example",
default_server_id="local_server", debug_output=False)
missionDurationYears = 4
YearsToSecs = 365.0 * 24.0 * 3600.0 # pedantically...this should be 365.2425 days
sapre_model = nom_client.get_model('sapre')
sapre_model.set_params(orbitType="GEN", missionDuration=missionDurationYears, missionDurationUnits=0)
sapre_result = nom_client.run_model(sapre_model)
print("Running trapped model")
ap8ae8_model = nom_client.get_model('irene')
ap8ae8_model.set_params(mode="mean_percentiles", percentiles=[95], includePlasmaEnergies="false")
ap8ae8_model.set_external_input(external_input_name="trajectory", external_input=sapre_result)
ap8ae8_results = nom_client.run_model(ap8ae8_model)
print(ap8ae8_results)
sapphire_worst_event_fluence_model = nom_client.get_model('sapphire-worst-event-fluence')
sapphire_worst_event_fluence_model.set_params(solarCycleOffsetFlag=1, solarCycleOffset=0)
sapphire_worst_event_fluence_model.set_external_input(external_input_name="trajectory", external_input=sapre_result)
sapphire_worst_event_fluence_results = nom_client.run_model(sapphire_worst_event_fluence_model)
print(sapphire_worst_event_fluence_results)
mulassis_model = nom_client.get_model('mulassis')
mulassis_model.new_input_group(input_group_name="input_spectra", unique_group_name="trapped_spectrum", params={
"spectrum": ap8ae8_results,
"resultName": "orbit_averaged_proton_spectrum",
"toflux": missionDurationYears * YearsToSecs # convert flux spectrum to fluence
})
mulassis_model.new_input_group(input_group_name="input_spectra", unique_group_name="solar_spectrum", params={
"spectrum": sapphire_worst_event_fluence_results,
"resultName": "sep_proton_spectrum",
"toflux": 1 # already a fluence spectrum!
})
mulassis_model.new_input_group(input_group_name="layers", unique_group_name="al_layer", params={
"layer_thickness": 1.0,
"layer_material": "aluminium",
"thickness_unit": "mm"
})
mulassis_model.new_input_group(input_group_name="layers", unique_group_name="ta_layer", params={
"layer_thickness": 1.0,
"layer_material": {
"name": "Tantalum",
"formula": "Ta",
"density": 12.3
},
"thickness_unit": "mm"
})
mulassis_model.set_params(geometryType="user-defined",
particleAngularDistribution="iso",
minimumAngle=2,
maximumAngle=89,
analysisType="fluence",
fluenceAnalysisBoundaries="all",
TIDAnalysisLayers="all"
)
mulassis_result = nom_client.run_model(mulassis_model)
print(mulassis_result)
print(mulassis_result.file_outputs.keys())
mulassis_result.write_output_files(file_key=None, location=_here)
Model references
ESA European Space Software Repository/MULASSIS,
ESA,
https://essr.esa.int/project/mulassis,
GEANT4 website, CERN, https://geant4.web.cern.ch/,
GEANT4 website, CERN, https://geant4.web.cern.ch/,