From 3bc80b9e874a6a764c56b240373f0556795f93dd Mon Sep 17 00:00:00 2001
From: JanHab <jan.habscheid@rwth-aachen.de>
Date: Tue, 25 Feb 2025 20:21:55 +0100
Subject: [PATCH] Docstrings for gismo functions

---
 gismo/GenerateMicrostructures_fun.py | 63 ++++++++++++++++++++++++----
 gismo/error_evaluation.py            |  3 +-
 2 files changed, 57 insertions(+), 9 deletions(-)

diff --git a/gismo/GenerateMicrostructures_fun.py b/gismo/GenerateMicrostructures_fun.py
index 96afa7c1ab..33bdbef638 100755
--- a/gismo/GenerateMicrostructures_fun.py
+++ b/gismo/GenerateMicrostructures_fun.py
@@ -5,11 +5,63 @@ import pandas as pd
 
 from gismo.gismo_export import AdditionalBlocks, export
 
-def generate(size_1, size_2, size_3, BOX_LENGTH, BOX_HEIGHT, EPS, INLET_BOUNDARY_ID, OUTLET_BOUNDARY_ID, knots_y, TILING, CLOSING_FACE, MICROTILE):
+def generate(
+        size_1:int, size_2:int, size_3:int, 
+        BOX_LENGTH:float, BOX_HEIGHT:float, 
+        EPS:float, 
+        INLET_BOUNDARY_ID:int, OUTLET_BOUNDARY_ID:int, 
+        knots_y:np.ndarray, 
+        TILING:list, 
+        CLOSING_FACE:str, 
+        MICROTILE:str
+    ) -> (sp.microstructure.Microstructure, list):
+    '''
+    Generate a microstructure
+
+    For a given size_1, size_2, and size_3, generate a microstructure with the given parameters.
+
+    Parameters
+    ----------
+    size_1 : int
+        Size of microtile on lowest level
+    size_2 : int
+        Size of microtile on middle level
+    size_3 : int
+        Size of microtile on highest level
+    BOX_LENGTH : float
+        Length of the box
+    BOX_HEIGHT : float
+        Height of the box
+    EPS : float
+        Precision
+    INLET_BOUNDARY_ID : int
+        Identifier for inlet boundary
+    OUTLET_BOUNDARY_ID : int
+        Identifier for outlet boundary
+    knots_y : np.ndarray
+        Knots for y direction
+    TILING : list
+        Tiling of the microstructure
+        [nx, ny] with nx, ny integers the number of tiles in x and y direction
+    CLOSING_FACE : str
+        Closing face of the microstructure, either "x" or "y"
+    MICROTILE : str
+        Type of microtile. See splinepy.microstructure.Microstructure for details
+
+    Returns
+    -------
+    sp.microstructure.Microstructure
+        Microstructure
+    list
+        List of additional blocks for gismo export
+
+    Raises
+    ------
+    ValueError
+        If the parametric function doesnt find the according y-value
+    '''
     # Define microstructure deformation function
     initial_macro_spline = sp.helpme.create.box(BOX_LENGTH, BOX_HEIGHT)
-    # x0_max, x1_max = initial_macro_spline.cps.max(axis=0)
-    # print(f'x0_max: {x0_max}, x1_max: {x1_max}')
     
     # Define identifier functions for microstructure boundaries
     def identifier_inlet(points):
@@ -25,9 +77,6 @@ def generate(size_1, size_2, size_3, BOX_LENGTH, BOX_HEIGHT, EPS, INLET_BOUNDARY
 
     # Define current parameterization function
     def para_function_(x):
-        # print(f'x: {x}')
-        # print(f'index: {index}')
-        x_ = x[0][0]
         y_ = x[0][1]
         if np.isclose(y_, knots_y[0], rtol=1e-2):
             return np.array(size_1).reshape(-1, 1)
@@ -41,7 +90,6 @@ def generate(size_1, size_2, size_3, BOX_LENGTH, BOX_HEIGHT, EPS, INLET_BOUNDARY
     # Create microstructure
     generator = sp.microstructure.Microstructure(
         deformation_function=initial_macro_spline.copy(),
-        # deformation_function=initial_parameter_spline.copy(),
         tiling=TILING,
         microtile=MICROTILE,
         parametrization_function=para_function_,
@@ -81,7 +129,6 @@ def generate(size_1, size_2, size_3, BOX_LENGTH, BOX_HEIGHT, EPS, INLET_BOUNDARY
         block_id=3,
         dim=2,
         function_list=["0"],
-        # bc_list=[(f"BID{OUTLET_BOUNDARY_ID}", "Dirichlet", 0)],
         bc_list=[], # use empty list, as bc_list argument is needed, but cv_list is wanted for corner value only
         cv_list=[
             ("0", "40", "2", "0"),
diff --git a/gismo/error_evaluation.py b/gismo/error_evaluation.py
index 12de7fa115..acef6a749e 100644
--- a/gismo/error_evaluation.py
+++ b/gismo/error_evaluation.py
@@ -55,6 +55,7 @@ def integrate_multipatch(multipatch, fields):
     return integration_sum
 
 def compute_integral_error(multipatch, fields_original, fields_recreated, norm="l2"):
+    """Compute integral error between original and recreated fields"""
     fields_error = []
     for patch, field_orig, field_recreated in zip(multipatch.patches, fields_original, fields_recreated):
         field_error = patch.copy()
@@ -66,8 +67,8 @@ def compute_integral_error(multipatch, fields_original, fields_recreated, norm="
     else:
         return error_integral
 
-# Load XML file to numpy array
 def get_solution_vectors(file_path, two_dimensional=False):
+    """Load XML file to numpy array"""
     # Parse the XML file
     tree = ET.parse(file_path)
     root = tree.getroot()
-- 
GitLab