def test_all(self): cls = self.__class__ rank = cls.comm.getRank() file_dir = os.path.dirname(__file__) # Create an Albany problem: filename = 'input_conductivity_dist_paramT.yaml' problem = Utils.createAlbanyProblem(file_dir+'/'+filename, cls.parallelEnv) n_directions = 4 parameter_map = problem.getParameterMap(0) directions = Tpetra.MultiVector(parameter_map, n_directions, dtype="d") directions[0,:] = 1. directions[1,:] = -1. directions[2,:] = 3. directions[3,:] = -3. problem.setDirections(0, directions) problem.performSolve() response = problem.getResponse(0) sensitivity = problem.getSensitivity(0, 0) hessian = problem.getReducedHessian(0, 0) g_target = 3.23754626955999991e-01 norm_target = 8.94463776843999921e-03 h_target = np.array([0.009195356672103817, 0.009195356672103817, 0.027586070971800013, 0.027586070971800013]) g_data = response.getData() norm = Utils.norm(sensitivity.getData(0), cls.comm) print("g_target = " + str(g_target)) print("g_data[0] = " + str(g_data[0])) print("norm = " + str(norm)) print("norm_target = " + str(norm_target)) hessian_norms = np.zeros((n_directions,)) for i in range(0,n_directions): hessian_norms[i] = Utils.norm(hessian.getData(i), cls.comm) tol = 1e-8 if rank == 0: self.assertTrue(np.abs(g_data[0]-g_target) < tol) self.assertTrue(np.abs(norm-norm_target) < tol) for i in range(0,n_directions): self.assertTrue(np.abs(hessian_norms[i]-h_target[i]) < tol)
def test_all(self): comm = Teuchos.DefaultComm.getComm() rank = comm.getRank() file_dir = os.path.dirname(__file__) # Create an Albany problem: filename = 'input_conductivity_dist_paramT.yaml' problem = Utils.createAlbanyProblem(file_dir + '/' + filename) n_directions = 4 parameter_map = problem.getParameterMap(0) directions = Tpetra.MultiVector(parameter_map, n_directions, dtype="d") directions[0, :] = 1. directions[1, :] = -1. directions[2, :] = 3. directions[3, :] = -3. problem.setDirections(0, directions) problem.performSolve() response = problem.getResponse(0) sensitivity = problem.getSensitivity(0, 0) hessian = problem.getReducedHessian(0, 0) g_target = 3.23754626955999991e-01 norm_target = 8.94463776843999921e-03 h_target = np.array([ 4.2121719763904516e-05, -4.21216874727712e-05, 0.00012636506241831498, -0.00012636506241831496 ]) g_data = response.getData() norm = Utils.norm(sensitivity.getData(0), comm) print("g_target = " + str(g_target)) print("g_data[0] = " + str(g_data[0])) print("norm = " + str(norm)) print("norm_target = " + str(norm_target)) tol = 1e-8 if rank == 0: self.assertTrue(np.abs(g_data[0] - g_target) < tol) self.assertTrue(np.abs(norm - norm_target) < tol) for i in range(0, n_directions): self.assertTrue(np.abs(hessian[i, 0] - h_target[i]) < tol)
def test_all(self): cls = self.__class__ rank = cls.comm.getRank() file_dir = os.path.dirname(__file__) # Create an Albany problem: filename = "input_dirichlet_mixed_paramsT.yaml" parameter = Utils.createParameterList( file_dir + "/" + filename, cls.parallelEnv ) parameter.sublist("Discretization").set("1D Elements", 10) parameter.sublist("Discretization").set("2D Elements", 10) problem = Utils.createAlbanyProblem(parameter, cls.parallelEnv) g_target_before = 0.35681844 g_target_after = 0.17388298 g_target_2 = 0.19570272 p_0_target = 0.39886689 p_1_norm_target = 5.37319376038225 tol = 1e-8 problem.performSolve() response_before_analysis = problem.getResponse(0) problem.performAnalysis() para_0 = problem.getParameter(0) para_1 = problem.getParameter(1) print(para_0.getData()) print(para_1.getData()) para_1_norm = Utils.norm(para_1.getData(), cls.comm) print(para_1_norm) if rank == 0: self.assertTrue(np.abs(para_0[0] - p_0_target) < tol) self.assertTrue(np.abs(para_1_norm - p_1_norm_target) < tol) problem.performSolve() response_after_analysis = problem.getResponse(0) print("Response before analysis " + str(response_before_analysis.getData())) print("Response after analysis " + str(response_after_analysis.getData())) if rank == 0: self.assertTrue(np.abs(response_before_analysis[0] - g_target_before) < tol) self.assertTrue(np.abs(response_after_analysis[0] - g_target_after) < tol) parameter_map_0 = problem.getParameterMap(0) para_0_new = Tpetra.Vector(parameter_map_0, dtype="d") para_0_new[:] = 0.0 problem.setParameter(0, para_0_new) problem.performSolve() response = problem.getResponse(0) print("Response after setParameter " + str(response.getData())) if rank == 0: self.assertTrue(np.abs(response[0] - g_target_2) < tol)