Coverage for yaptide/converter/converter/fluka/cards/material_card.py: 79%

14 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.helper_parsers.material_parser import FlukaMaterial 

3from converter.fluka.cards.card import Card 

4 

5 

6@dataclass 

7class MaterialsCard: 

8 """ 

9 Class representing description of materials in Fluka input. 

10 Every material is represented by one line: 

11 codwed - "MATERIAL" 

12 what(1) - atomic number 

13 what(2) - empty, computed according to what(1) 

14 what(3) - density in g/cm^3 

15 what(4) - empty, we are using name-based input 

16 what(5) - ignored 

17 what(6) - default, natural composition of the what(1) element 

18 sdum - Name of the material 

19 documentation: https://flukafiles.web.cern.ch/manual/chapters/description_input/description_options/material.html#material # skipcq: FLK-W505 

20 """ 

21 

22 data: list[FlukaMaterial] = field(default_factory=list) 

23 codewd: str = "MATERIAL" 

24 

25 def __str__(self) -> str: 

26 """Return card as string.""" 

27 result = "" 

28 for material in self.data: 

29 what = [material.Z, "", material.density, "", "", ""] 

30 sdum = material.fluka_name 

31 result += str(Card(self.codewd, what, sdum)) + "\n" 

32 return result.strip()