Repository: petrobras/ross
Issue: Cyclic import when trying to use utils function on materials.py

I am trying to implement some functionality so we can convert units when calling the functions.
I have created on a function called `check_units` inside the utils.py module. The problem is that, when I try to import this function on the materials.py module I get an `ImportError` due to the fact that the utils.py module is already trying to import from the materials.py module.
I believe that in the utils.py module we should not import from the other modules. 
For now I will create an additional units.py module, but we should try to solve this issue in the future.

Changed files:
ross/shaft_element.py, ross/utils.py

diff --git a/ross/shaft_element.py b/ross/shaft_element.py
index 038dc6b..95eed84 100644
--- a/ross/shaft_element.py
+++ b/ross/shaft_element.py
@@ -324,13 +324,22 @@ class ShaftElement(Element):
         )
         list_of_shafts = []
         if sheet_type == "Model":
+            new_materials = {}
+            for i in range(0, len(parameters["matno"])):
+                new_material = Material(
+                    name="shaft_mat_" + str(parameters["matno"][i]),
+                    rho=parameters["rhoa"][i],
+                    E=parameters["ea"][i],
+                    G_s=parameters["ga"][i],
+                )
+                new_materials["shaft_mat_" + str(parameters["matno"][i])] = new_material
             for i in range(0, len(parameters["L"])):
                 list_of_shafts.append(
                     cls(
                         L=parameters["L"][i],
                         i_d=parameters["i_d"][i],
                         o_d=parameters["o_d"][i],
-                        material=parameters[parameters["material"][i]],
+                        material=new_materials[parameters["material"][i]],
                         n=parameters["n"][i],
                         axial_force=parameters["axial_force"][i],
                         torque=parameters["torque"][i],
diff --git a/ross/utils.py b/ross/utils.py
index 553c31e..d681709 100644
--- a/ross/utils.py
+++ b/ross/utils.py
@@ -4,8 +4,6 @@ from bokeh.models import LogColorMapper
 from bokeh.palettes import Viridis256
 from bokeh.plotting import figure
 
-from ross.materials import Material
-
 
 class DataNotFoundError(Exception):
     """
@@ -175,14 +173,10 @@ def read_table_file(file, element, sheet_name=0, n=0, sheet_type="Model"):
                 material_rho[i] = material_rho[i] * 27679.904
                 material_e[i] = material_e[i] * 6894.757
                 material_g_s[i] = material_g_s[i] * 6894.757
-        for i in range(0, len(material_name)):
-            new_material = Material(
-                name="shaft_mat_" + str(material_name[i]),
-                rho=material_rho[i],
-                E=material_e[i],
-                G_s=material_g_s[i],
-            )
-            new_materials["shaft_mat_" + str(material_name[i])] = new_material
+        new_materials["matno"] = material_name
+        new_materials["rhoa"] = material_rho
+        new_materials["ea"] = material_e
+        new_materials["ga"] = material_g_s
 
     df = pd.read_excel(file, header=header_index, sheet_name=sheet_name)
     df.columns = df.columns.str.lower()