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

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 

14 

15 

16@dataclass 

17class Input: 

18 """Class mapping of the Fluka input file.""" 

19 

20 beam: FlukaBeam = field(default_factory=lambda: FlukaBeam()) # skipcq: PYL-W0108 

21 number_of_particles: int = 10000 

22 

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) 

31 

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""" 

58 

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 )