4
4
# Authors: https://github.com/open-atmos/PyPartMC/graphs/contributors #
5
5
####################################################################################################
6
6
7
+ import numpy as np
8
+ import pytest
7
9
import PyPartMC as ppmc
8
10
from PyPartMC import si
9
11
@@ -25,21 +27,21 @@ def test_ctor():
25
27
26
28
@staticmethod
27
29
def test_spec_by_name_found ():
28
- #arrange
30
+ # arrange
29
31
sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
30
32
31
- #act
33
+ # act
32
34
value = sut .spec_by_name ("H2O" )
33
35
34
- #assert
36
+ # assert
35
37
assert value == 0
36
38
37
39
@staticmethod
38
40
def test_spec_by_name_not_found ():
39
- #arrange
41
+ # arrange
40
42
sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
41
43
42
- #act and assert
44
+ # act and assert
43
45
try :
44
46
_ = sut .spec_by_name ("XXX" )
45
47
assert False
@@ -48,47 +50,81 @@ def test_spec_by_name_not_found():
48
50
49
51
@staticmethod
50
52
def test_len ():
51
- #arrange
53
+ # arrange
52
54
sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
53
55
54
- #act
56
+ # act
55
57
value = len (sut )
56
58
57
- #assert
59
+ # assert
58
60
assert value == len (AERO_DATA_CTOR_ARG_MINIMAL )
59
61
60
62
@staticmethod
61
63
def test_frac_dim ():
62
- #arrange
64
+ # arrange
63
65
sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
64
66
value = 3
65
67
66
- #act
68
+ # act
67
69
sut .frac_dim = value
68
70
69
- #assert
71
+ # assert
70
72
assert value == sut .frac_dim
71
73
72
74
@staticmethod
73
75
def test_vol_fill_factor ():
74
- #arrange
76
+ # arrange
75
77
sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
76
78
value = 1
77
79
78
- #act
80
+ # act
79
81
sut .vol_fill_factor = value
80
82
81
- #assert
83
+ # assert
82
84
assert value == sut .vol_fill_factor
83
85
84
86
@staticmethod
85
87
def test_prime_radius ():
86
- #arrange
88
+ # arrange
87
89
sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
88
90
value = 44
89
91
90
- #act
92
+ # act
91
93
sut .prime_radius = value
92
94
93
- #assert
95
+ # assert
94
96
assert value == sut .prime_radius
97
+
98
+ @staticmethod
99
+ def test_rad2vol_sphere ():
100
+ # arrange
101
+ sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
102
+ radius = 1e-6
103
+ sut .frac_dim = 3.0
104
+ sut .vol_fill_factor = 1.0
105
+ sut .prime_radius = 1e-8
106
+
107
+ # act
108
+ value = sut .rad2vol (radius )
109
+
110
+ # assert
111
+ np .testing .assert_almost_equal (value ,(4 / 3 )* np .pi * (radius )** 3 )
112
+
113
+ @staticmethod
114
+ @pytest .mark .parametrize ("aero_data_params" , (
115
+ {"frac_dim" : 2.4 , "vol_fill_factor" : 1.2 , 'prime_radius' : 1e-7 },
116
+ {"frac_dim" : 2.5 , "vol_fill_factor" : 1.1 , "prime_radius" : 1e-8 },
117
+ {"frac_dim" : 2.2 , "vol_fill_factor" : 1.3 , 'prime_radius' : 1e-6 }))
118
+ def test_rad2vol_fractal (aero_data_params :dict ):
119
+ # arrange
120
+ sut = ppmc .AeroData (AERO_DATA_CTOR_ARG_MINIMAL )
121
+ radius = 1e-6
122
+ for key ,value in aero_data_params .items ():
123
+ setattr (sut , key , value )
124
+
125
+ # act
126
+ value = sut .rad2vol (radius )
127
+
128
+ # assert
129
+ np .testing .assert_almost_equal (value , (4 / 3 )* np .pi * (sut .prime_radius )** 3 *
130
+ (radius / sut .prime_radius )** sut .frac_dim / sut .vol_fill_factor )
0 commit comments