Coverage for yaptide/converter/converter/fluka/input.py: 100%
28 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-07-01 12:55 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-07-01 12:55 +0000
1from dataclasses import dataclass, field
2from converter.fluka.cards.beam_card import BeamCard
3from converter.fluka.cards.card import Card
4from converter.fluka.cards.figure_card import FiguresCard
5from converter.fluka.cards.region_card import RegionsCard
6from converter.fluka.cards.material_card import MaterialsCard
7from converter.fluka.cards.compound_card import CompoundsCard
8from converter.fluka.cards.assignmat_card import AssignmatsCard
9from converter.fluka.cards.matprop_card import MatPropsCard
10from converter.fluka.cards.lowmat_card import LowMatsCard
11from converter.fluka.helper_parsers.beam_parser import FlukaBeam
12from converter.fluka.cards.scoring_card import ScoringsCard
13from converter.solid_figures import SolidFigure
16@dataclass
17class Input:
18 """Class mapping of the Fluka input file."""
20 beam: FlukaBeam = field(default_factory=lambda: FlukaBeam()) # skipcq: PYL-W0108
21 number_of_particles: int = 10000
23 materials: list = field(default_factory=list)
24 compounds: list = field(default_factory=list)
25 figures: list[SolidFigure] = field(default_factory=list)
26 regions: list = field(default_factory=list)
27 scorings: list = field(default_factory=list)
28 assignmats: list = field(default_factory=list)
29 matprops: list = field(default_factory=list)
30 lowmats: list = field(default_factory=list)
32 template: str = """TITLE
33proton beam simulation
34* default physics settings for hadron therapy
35DEFAULTS HADROTHE
36{BEAM}
37* geometry description starts here
38GEOBEGIN COMBNAME
39 0 0
40{FIGURES}
41END
42{REGIONS}
43END
44GEOEND
45{MATERIALS}
46{LOWMATS}
47{COMPOUNDS}
48{MATPROPS}
49{ASSIGNMATS}
50* generated scoring cards
51{SCORINGS}
52* random number generator settings
53RANDOMIZ 137
54* number of particles to simulate
55{START}
56STOP
57"""
59 def __str__(self):
60 """Return fluka input file as string"""
61 return self.template.format(
62 START=Card(codewd="START", what=[str(self.number_of_particles)]),
63 BEAM=BeamCard(data=self.beam),
64 FIGURES=FiguresCard(data=self.figures),
65 REGIONS=RegionsCard(data=self.regions),
66 SCORINGS=ScoringsCard(data=self.scorings),
67 MATERIALS=MaterialsCard(data=self.materials),
68 LOWMATS=LowMatsCard(data=self.lowmats),
69 COMPOUNDS=CompoundsCard(data=self.compounds),
70 ASSIGNMATS=AssignmatsCard(data=self.assignmats),
71 MATPROPS=MatPropsCard(data=self.matprops),
72 )