Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 17 additions & 14 deletions kratos/python_scripts/json_output_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
import KratosMultiphysics
from KratosMultiphysics.json_utilities import read_external_json, write_external_json

# Adding operator add
from operator import add

def Factory(settings, Model):
if not isinstance(settings, KratosMultiphysics.Parameters):
raise Exception("Expected input shall be a Parameters object, encapsulating a json string")
Expand Down Expand Up @@ -285,24 +288,24 @@ def ExecuteFinalizeSolutionStep(self):
data["RESULTANT"][variable_name + "_Z"][-1] += value[2]
else:
if not self.resultant_solution:
list = self.__kratos_vector_to_python_list(value)
data[node_identifier][variable_name ].append(list)
lst = self.__kratos_vector_to_python_list(value)
data[node_identifier][variable_name ].append(lst)
else:
aux = 0.0
for index in range(len(value)):
aux += value[index]
if count == 0:
data["RESULTANT"][variable_name ].append(aux)
data["RESULTANT"][variable_name].append(aux)
else:
data["RESULTANT"][variable_name ][-1] += aux
data["RESULTANT"][variable_name][-1] += aux
elif variable_type == "Vector":
if not self.resultant_solution:
data[node_identifier][variable_name].append(self.__kratos_vector_to_python_list(value))
else:
if count == 0:
data["RESULTANT"][variable_name].append(self.__kratos_vector_to_python_list(value))
else:
data["RESULTANT"][variable_name][-1] += self.__kratos_vector_to_python_list(value)
data["RESULTANT"][variable_name][-1] = list(map(add, data["RESULTANT"][variable_name][-1], self.__kratos_vector_to_python_list(value)))

# TODO: Add pending classes
count += 1
Expand Down Expand Up @@ -352,9 +355,9 @@ def ExecuteFinalizeSolutionStep(self):
data["RESULTANT"][variable_name + "_Z"][str(gp)][-1] += value[gp][2]
else:
if not self.resultant_solution:
list = self.__kratos_vector_to_python_list(value)
lst = self.__kratos_vector_to_python_list(value)
for gp in range(gauss_point_number):
data["ELEMENT_" + str(elem.Id)][variable_name][str(gp)].append(list)
data["ELEMENT_" + str(elem.Id)][variable_name][str(gp)].append(lst)
else:
if count == 0:
for gp in range(gauss_point_number):
Expand All @@ -371,13 +374,13 @@ def ExecuteFinalizeSolutionStep(self):
elif variable_type == "Vector":
if not self.resultant_solution:
for gp in range(gauss_point_number):
list = self.__kratos_vector_to_python_list(value[gp])
data["ELEMENT_" + str(elem.Id)][variable_name][str(gp)].append(list)
lst = self.__kratos_vector_to_python_list(value[gp])
data["ELEMENT_" + str(elem.Id)][variable_name][str(gp)].append(lst)
else:
if count == 0:
for gp in range(gauss_point_number):
list = self.__kratos_vector_to_python_list(value[gp])
data["RESULTANT"][variable_name][str(gp)][-1] += list
lst = self.__kratos_vector_to_python_list(value[gp])
data["RESULTANT"][variable_name][str(gp)][-1] += lst

# TODO: Add pending classes
count += 1
Expand All @@ -392,10 +395,10 @@ def __kratos_vector_to_python_list(self, value):
value -- The Kratos vector to transform
"""

list = []
lst = []
for index in range(len(value)):
list.append(value[index])
return list
lst.append(value[index])
return lst

def __generate_variable_list_from_input(self, param):
""" Parse a list of variables from input.
Expand Down
12 changes: 10 additions & 2 deletions kratos/tests/test_json_output_process.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
import KratosMultiphysics
import KratosMultiphysics.KratosUnittest as KratosUnittest
import KratosMultiphysics.kratos_utilities as KratosUtils
from KratosMultiphysics.json_output_process import JsonOutputProcess

import itertools
import json
import os
from pathlib import Path

def GetFilePath(fileName):
return os.path.join(os.path.dirname(os.path.realpath(__file__)), fileName)

class TestJsonOutputProcess(KratosUnittest.TestCase):
def setUp(self):
super().setUp()
self.model = KratosMultiphysics.Model()
self.model_part = self.model.CreateModelPart("Main")

def tearDown(self):
KratosUtils.DeleteFileIfExisting(GetFilePath("external_forces_output.json"))
KratosUtils.DeleteFileIfExisting(GetFilePath("resultant_external_forces_output.json"))

def add_three_nodes_to_model_part(self):
node_ids_and_coordinates = [
(1, 0.0, 0.0, 0.0),
Expand Down Expand Up @@ -79,6 +86,7 @@ def test_output_of_resultant_vector_variable(self):
self.add_vectors_to_nodes_of_model_part(
vector_variable_for_testing, test_vectors
)
ref_solution = [6.0, 6.0, 6.0]

output_file_path = (
Path(__file__).resolve().parent / "resultant_external_forces_output.json"
Expand All @@ -103,7 +111,7 @@ def test_output_of_resultant_vector_variable(self):
self.assertEqual(len(resultant_vector_variable_results_for_all_time_steps), 1)
self.assertVectorAlmostEqual(
resultant_vector_variable_results_for_all_time_steps[0],
list(itertools.chain(*test_vectors)),
ref_solution,
)


Expand Down
Loading