Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

import os 

 

if 'READTHEDOCS' not in os.environ: 

from rocketcea.input_cards import oxCards, fuelCards, propCards 

else: 

from rocketisp.mock.input_cards import oxCards, fuelCards, propCards 

 

good_set = set( ['F', 'C', 'O', 'N', 'CL', 'H', 'P', 'AL','B'] ) 

 

def get_elements( prop_name ): 

""" 

Return a list of elements in given propellant name. 

For example MMH returns ['H', 'N', 'C']. 

""" 

element_set = set() 

if prop_name.upper() in ['A50','UDMH']: 

return ['C','H','N'] 

elif prop_name.upper() in ['AP']: 

return ['H','N','CL','O'] 

elif prop_name.upper() in ['AIR']: 

return ['N','O'] 

elif prop_name.upper().startswith('MON'): 

return ['N','O'] 

 

 

for cardD in [oxCards, fuelCards, propCards]: 

if prop_name in cardD: 

cardL = cardD[ prop_name ] 

for card in cardL: 

for s in card.split(): 

if s in good_set: 

element_set.add( s ) 

 

return list( element_set ) 

 

def get_ox_fuel_groupname( oxName, fuelName ): 

""" 

Given an (oxName, fuelName) pair, return group name. 

For example N2O4/MMH returns CHNO. 

""" 

return ''.join( sorted( list( set( get_elements( oxName ) + get_elements( fuelName ) ) ) ) ) 

 

fuelL = ['A50','CH4','C2H6','Ethanol','Methanol','MMH','MHF3','N2H4','NH3','LH2','Propane','UDMH','RP1'] 

oxL = ['N2O4','LOX','MON10','MON25','MON30','N2O','IRFNA','CLF5','F2'] 

 

def get_ox_fuel_pair_in_group( group_name ): 

""" 

Return an ox/fuel pair (oxName, fuelName) that is in group_name. 

If no ox/fuel pair present, then return (None, None). 

""" 

if group_name == "All": 

return 'N2O4','MMH' 

 

for fuelName in fuelL: 

for oxName in oxL: 

gname = get_ox_fuel_groupname( oxName, fuelName ) 

 

if group_name == gname: 

return oxName, fuelName 

return None, None 

 

if __name__ == "__main__": 

 

#for name in sorted( list(oxCards.keys())): 

# print(name, get_elements(name)) 

 

group_set = set() 

for oxName in oxL: 

for fuelName in fuelL: 

groupName = get_ox_fuel_groupname( oxName, fuelName ) 

group_set.add( groupName ) 

 

oL = get_elements( oxName ) 

fL = get_elements( fuelName ) 

print('%20s'%(oxName + '/' + fuelName), '%4s'%groupName, ' ox list=',oL,' fuel list=',fL ) 

 

print('group_set =', group_set) 

 

print('get_ox_fuel_pair_in_group( "HO" ) =',get_ox_fuel_pair_in_group( "HO" ))