def testCylinder(self): with KratosUnittest.WorkFolderScope('.', __file__): node_ids = [1968] # calculate sensitivity by finite difference primal_parameters = AdjointVMSSensitivity2D._ReadParameters( './AdjointVMSSensitivity2DTest/cylinder_test_parameters.json') step_size = 0.00000001 fd_sensitivities = FiniteDifferenceBodyFittedDragShapeSensitivityAnalysis.ComputeSensitivity( node_ids, step_size, primal_parameters, [1.0, 0.0, 0.0], 'MainModelPart.NoSlip2D_Cylinder', SolvePrimalProblem) # solve adjoint adjoint_parameters = AdjointVMSSensitivity2D._ReadParameters( './AdjointVMSSensitivity2DTest/cylinder_test_adjoint_parameters.json' ) adjoint_sensitivities = ComputeAdjointSensitivity( node_ids, adjoint_parameters, SolveAdjointProblem) self.assertMatrixAlmostEqual(adjoint_sensitivities, fd_sensitivities, 5)
def testTwoElementsSlipBossak(self): with KratosUnittest.WorkFolderScope('.', __file__): node_ids = [1] # calculate sensitivity by finite difference primal_parameters = AdjointVMSSensitivity2D._ReadParameters( './AdjointVMSSensitivity2DTest/two_elements_bossak_test_parameters.json' ) step_size = 1e-9 fd_sensitivities = FiniteDifferenceBodyFittedDragShapeSensitivityAnalysis.ComputeSensitivity( node_ids, step_size, primal_parameters, [1.0, 0.0, 0.0], 'MainModelPart.Structure', SolvePrimalProblem, lambda params: AdjointVMSSensitivity2D. AddHDF5PrimalOutputProcess(params, False)) # solve adjoint adjoint_parameters = AdjointVMSSensitivity2D._ReadParameters( './AdjointVMSSensitivity2DTest/two_elements_bossak_test_adjoint_parameters.json' ) adjoint_sensitivities = ComputeAdjointSensitivity( node_ids, adjoint_parameters, SolveAdjointProblem) self.assertMatrixAlmostEqual(adjoint_sensitivities, fd_sensitivities, 4)
def testSlipSteadyNormCylinder(self): with KratosUnittest.WorkFolderScope('.', __file__): node_ids = [1968] # calculate sensitivity by finite difference primal_parameters = AdjointVMSSensitivity2D._ReadParameters( './AdjointVMSSensitivity2DTest/steady_cylinder_slip_test_parameters.json' ) step_size = 1e-9 fd_sensitivities = FiniteDifferenceVelocityPressureNormSquareShapeSensitivityAnalysis.ComputeSensitivity( node_ids, step_size, primal_parameters, 'MainModelPart.NoSlip2D_Cylinder', SolvePrimalProblem, lambda params: AdjointVMSSensitivity2D. AddHDF5PrimalSlipOutputProcess(params, True)) # solve adjoint adjoint_parameters = AdjointVMSSensitivity2D._ReadParameters( './AdjointVMSSensitivity2DTest/steady_cylinder_slip_test_norm_adjoint_parameters.json' ) adjoint_sensitivities = ComputeAdjointSensitivity( node_ids, adjoint_parameters, SolveAdjointProblem) self.assertMatrixAlmostEqual(adjoint_sensitivities, fd_sensitivities, 6)