Пример #1
0
 def test_extractAnSolParams(self):
     adMock = MagicMock()
     params = {
         'a': 20,
         'b': 10,
         'omega': 60,
         'gamma': 45,
         'sigma': 100,
         'v': 0.3
     }
     adMock.getAnSolParams.return_value = params
     an = AnalysisNodeData('node', ['K1', 'K3'], 'areas')
     an.extractAnSolParams(adMock)
     expParams = {
         'a': set([20]),
         'b': set([10]),
         'v': set([0.3]),
         'omega': set([60]),
         'gamma': set([45]),
         'sigma': set([100])
     }
     self.assertEqual(expParams, an.anSolParams)
     an.extractAnSolParams(adMock)
     self.assertEqual(expParams, an.anSolParams)
     params['a'] = 30
     expParams['a'] = set([20, 30])
     adMock = MagicMock()
     adMock.getAnSolParams.return_value = params
     an.extractAnSolParams(adMock)
     self.assertEqual(expParams, an.anSolParams)
Пример #2
0
 def test_extractDataFromSimId(self):
     with patch('dataProcessing.AnalysisNodeData.extractAnSolParams'
                ) as ansolMock:
         with patch('dataProcessing.AnalysisData') as aMock:
             aMock().getAngles.return_value = [4, 5, 6]
             aMock().getResults.return_value = {
                 'K1': ['1r4', '1r5', '1r6'],
                 'K3': ['3r4', '3r5', '3r6']
             }
             aMock().getAnSol.return_value = {
                 'K1': ['1a4', '1a5', '1a6'],
                 'K3': ['3a4', '3a5', '3a6']
             }
             an = AnalysisNodeData('node', ['K1', 'K3'], 'areas')
             an.angles = [1, 2, 3]
             an.results = {'K1': ['1r1'], 'K2': ['2r1'], 'K3': ['3r1']}
             an.anSol = {'K1': ['1a1'], 'K2': ['2a1'], 'K3': ['3a1']}
             an.extractDataFromSimId('simId')
             expAngles = [1, 2, 3, 4, 5, 6]
             expResults = {
                 'K1': ['1r1', '1r4', '1r5', '1r6'],
                 'K2': ['2r1'],
                 'K3': ['3r1', '3r4', '3r5', '3r6']
             }
             expAnSol = {
                 'K1': ['1a1', '1a4', '1a5', '1a6'],
                 'K2': ['2a1'],
                 'K3': ['3a1', '3a4', '3a5', '3a6']
             }
             self.assertEqual(expAngles, list(an.angles))
             for k in expResults.keys():
                 self.assertEqual(expResults[k], list(an.results[k]))
                 self.assertEqual(expAnSol[k], list(an.anSol[k]))
Пример #3
0
 def test_contructor_with_valid_input(self):
     an = AnalysisNodeData(node='node',
                           sifs=['K1', 'K3'],
                           eSignFactor='areas')
     self.assertEqual('areas', an.eSignFactor)
     self.assertEqual(['K1', 'K3'], an.sifs)
     self.assertEqual('node', an.node)
     self.assertEqual([], list(an.angles))
     for s in ['K1', 'K3']:
         self.assertEqual(0, len(an.results[s]))
         self.assertEqual(0, len(an.anSol[s]))
     self.assertEqual(
         {
             'a': set([]),
             'b': set([]),
             'omega': set([]),
             'gamma': set([]),
             'sigma': set([]),
             'v': set([])
         }, an.anSolParams)
     self.assertEqual({}, an.errors)
     expEst = {
         'areaDiff': {},
         'dotProd': {},
         'avgNormError': {},
         'maxNormError': {},
         'rmsd': {}
     }
     self.assertEqual(expEst, an.estimates)
Пример #4
0
 def test_sortDataByAnglesData(self):
     an = AnalysisNodeData(node='node', sifs=['K1'], eSignFactor='areas')
     an.angles = [2, 3, 1, 0]
     an.results['K1'] = [6, 7, 5, 4]
     an.anSol['K1'] = [9, 10, 8, 7]
     an.sortDataByAnglesData()
     self.assertEqual([0, 1, 2, 3], list(an.angles))
     self.assertEqual([4, 5, 6, 7], list(an.results['K1']))
     self.assertEqual([7, 8, 9, 10], list(an.anSol['K1']))
Пример #5
0
 def test_extractDataFromSims_with_nonempty_node(self):
     with patch('dataProcessing.AnalysisNodeData.extractDataFromSimId'
                ) as extrMock:
         with patch('trees.TreeNode.getSuccessfulMembers') as successMock:
             successMock.return_value = [1, 2, 3]
             an = AnalysisNodeData(TreeNode(''), ['K1'], 'areas')
             an.extractDataFromSims()
             successMock.assert_called_once_with()
             calls = [call(1), call(2), call(3)]
             self.assertEqual(calls, extrMock.mock_calls)
Пример #6
0
 def test_calcEstimates_with_ZeroDivisionError(self):
     wrMock = MagicMock(side_effect=ZeroDivisionError)
     with patch('miscFuncs.calcStatsWrapper', wrMock):
         an = AnalysisNodeData('node', ['K1'], 'areas')
         an.angles = [1, 2]
         an.anSol = {'K1': [1, 2]}
         an.results = {'K1': [1, 2]}
         an.calcEstimates()
     errs = ['areaDiff', 'dotProd', 'avgNormError', 'maxNormError', 'rmsd']
     for e in errs:
         self.assertTrue(np.isnan(an.estimates[e]['K1']))
Пример #7
0
 def test_calcErrors(self):
     diffMock = MagicMock(return_value=1)
     with patch('miscFuncs.calcDiffErrors', diffMock):
         an = AnalysisNodeData('node', ['K1', 'K2'], 'areas')
         an.results = {'K1': ['1r1', '1r2'], 'K2': ['2r1', '2r2']}
         an.anSol = {'K1': ['1a1', '1a2'], 'K2': ['2a1', '2a2']}
         an.calcErrors()
     diffMock.assert_any_call(['1a1', '1a2'], ['1r1', '1r2'])
     diffMock.assert_any_call(['2a1', '2a2'], ['2r1', '2r2'])
     self.assertEqual(2, diffMock.call_count)
     expected = {'difference': {'K1': 1, 'K2': 1}, 'normedDiff': {}}
Пример #8
0
 def test_verifyAnSolParams_with_sets_of_multiple_length(self):
     an = AnalysisNodeData('node', ['K1', 'K2'], 'areas')
     an.anSolParams = {
         'a': set(['2', '3']),
         'b': set(['1', '2', '3']),
         'v': set(['0.3']),
         'omega': set(['60']),
         'gamma': set(['45']),
         'sigma': set(['100'])
     }
     self.assertRaises(AssertionError, an.verifyAnSolParams)
Пример #9
0
 def test_calcSIFsForSigmaAndSIF(self):
     an = AnalysisNodeData('node', ['K1'], 'areas')
     an.anSolParams = {'a': 20, 'b': 10, 'v': 0.3, 'gamma': 45, 'omega': 60}
     an.angles = [30, 45]
     aMock = MagicMock(return_value=123)
     with patch('anSol.calcAnSolWrapper', aMock):
         res = an.calcSIFsForSigmaAndSIF(100, 'K2')
     self.assertEqual(123, res)
     aMock.assert_called_once_with(sifKey='K2',
                                   majorAxis=20,
                                   minorAxis=10,
                                   v=0.3,
                                   betas=[30, 45],
                                   gamma=45,
                                   omega=60,
                                   tensileStress=100)
Пример #10
0
 def test_calcEstimates_with_nonzero_analytical_solutions(self):
     wrMock = MagicMock(return_value=1)
     with patch('miscFuncs.calcStatsWrapper', wrMock):
         an = AnalysisNodeData('node', ['K1', 'K3'], 'areas')
         an.angles = [1, 2]
         an.anSol = {'K1': [1, 2], 'K3': [1, 2]}
         an.results = {'K1': [1, 2], 'K3': [1, 2]}
         an.calcEstimates()
     expected = {
         e: {
             'K1': 1,
             'K3': 1
         }
         for e in
         ['areaDiff', 'dotProd', 'avgNormError', 'maxNormError', 'rmsd']
     }
     self.assertEqual(expected, an.estimates)
Пример #11
0
 def test_verifyAnSolParams_with_sets_of_unit_length(self):
     an = AnalysisNodeData('node', ['K1', 'K2'], 'areas')
     an.anSolParams = {
         'a': set(['2']),
         'b': set(['1']),
         'v': set(['0.3']),
         'omega': set(['60']),
         'gamma': set(['45']),
         'sigma': set(['100'])
     }
     an.verifyAnSolParams()
     expected = {
         'a': 2,
         'b': 1,
         'v': 0.3,
         'omega': 60,
         'gamma': 45,
         'sigma': 100
     }
     self.assertEqual(expected, an.anSolParams)
Пример #12
0
 def test_fixAngleValues(self):
     an = AnalysisNodeData('node', ['K1'], 'areas')
     an.angles = np.array([1, 4, 90, 120, 90, 340, 380, 720])
     an.fixAngleValues()
     exp = [1, 4, 90, 120, 90, 340, 20, 0]
     self.assertEqual(exp, list(an.angles))