{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Generate shape coefficients" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following steps are performed to obtain all the artifacts for shape coefficient use case:\n", "\n", "1. Read parameters file\n", "2. Read Mesh description\n", " * Its path can be specified\n", " * Or it can be obtained from the simulation configuration file\n", "3. Read data for pressure coefficient" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initialize Path Manager" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from cfdmod.use_cases.pressure.path_manager import CePathManager\n", "import pathlib\n", "\n", "path_manager = CePathManager(output_path=pathlib.Path(\"./output/pressure\"))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read post-processing Ce config file" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "CeCaseConfig(shape_coefficient={'measurement_1': CeConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='mean_eq', display_name='', params=MeanEquivalentParamsModel(scale_factor=0.61)), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute')), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremePeakParamsModel(method_type='Peak', peak_factor=3.0))], zoning=ZoningConfig(global_zoning=ZoningModel(x_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0, 225.0, 250.0], y_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0], z_intervals=[0.0, 5.0, 10.0, 15.0, 20.0]), no_zoning=['t1_ym'], exclude=['p1_xp'], exceptions={'zoning1': ExceptionZoningModel(x_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0, 225.0, 250.0], y_intervals=[0.0, 25.0, 50.0, 75.0, 100.0, 125.0, 150.0, 175.0, 200.0], z_intervals=[0.0, 20.0], surfaces=['t2_yp'])}), sets={'lanternim': ['L1_xp', 'L2_yp', 'L3_zp_yp', 'L4_zp_ym', 'L5_ym', 'L6_xm']}, transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0))), 'measurement_2': CeConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='mean_eq', display_name='', params=MeanEquivalentParamsModel(scale_factor=0.61)), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeGumbelParamsModel(method_type='Gumbel', peak_duration=3.0, event_duration=300.0, n_subdivisions=10, non_exceedance_probability=0.78, full_scale_U_H=40.0, full_scale_characteristic_length=22.4)), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute'))], zoning=ZoningConfig(global_zoning=ZoningModel(x_intervals=[0.0, 250.0], y_intervals=[0.0, 200.0], z_intervals=[0.0, 20.0]), no_zoning=['t2_yp'], exclude=['lanternim', 't1_ym'], exceptions={}), sets={'lanternim': ['L1_xp', 'L2_yp', 'L3_zp_yp', 'L4_zp_ym', 'L5_ym', 'L6_xm']}, transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0))), 'measurement_3': CeConfig(statistics=[BasicStatisticModel(stats='mean', display_name=''), BasicStatisticModel(stats='rms', display_name=''), BasicStatisticModel(stats='skewness', display_name=''), BasicStatisticModel(stats='kurtosis', display_name=''), ParameterizedStatisticModel(stats='mean_eq', display_name='', params=MeanEquivalentParamsModel(scale_factor=0.61)), ParameterizedStatisticModel(stats='min', display_name='', params=ExtremeMovingAverageParamsModel(method_type='Moving Average', window_size_interval=3.0, full_scale_U_H=40.0, full_scale_characteristic_length=22.4)), ParameterizedStatisticModel(stats='max', display_name='', params=ExtremeAbsoluteParamsModel(method_type='Absolute'))], zoning=ZoningConfig(global_zoning=ZoningModel(x_intervals=[0.0, 125.0, 250.0], y_intervals=[-inf, inf], z_intervals=[-inf, inf]), no_zoning=[], exclude=[], exceptions={}), sets={}, transformation=TransformationConfig(translation=(0, 0, 0), rotation=(0.0, 0.0, 0.0), fixed_point=(0, 0, 0)))})" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from cfdmod.use_cases.pressure.shape.Ce_config import CeCaseConfig\n", "\n", "config_path = pathlib.Path(\"./fixtures/tests/pressure/Ce_params.yaml\")\n", "post_proc_cfg = CeCaseConfig.from_file(config_path)\n", "\n", "post_proc_cfg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Read LNAS Mesh" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((1549, 3), (2915, 3))" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from lnas import LnasFormat\n", "\n", "mesh_path = pathlib.Path(\"./fixtures/tests/pressure/galpao/galpao.normalized.lnas\")\n", "mesh = LnasFormat.from_file(mesh_path)\n", "\n", "mesh.geometry.vertices.shape, mesh.geometry.triangles.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Process shape coefficient use case" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[37m[2024-05-23 15:34:37,977] [INFO] - cfdmod - Processing measurement_1 ... (3797609262.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:37,979] [INFO] - cfdmod - Getting geometry data... (Ce_data.py:151)\u001b[39m\n", "\u001b[95m[2024-05-23 15:34:37,996] [DEBUG] - cfdmod - Surface p1_xp ignored! (Ce_geom.py:52)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:38,034] [INFO] - cfdmod - Tabulating geometry data... (Ce_data.py:154)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:38,171] [INFO] - cfdmod - Processing timesteps groups... (Ce_data.py:161)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:40,125] [INFO] - cfdmod - Calculating statistics... (Ce_data.py:175)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:40,163] [INFO] - cfdmod - Processing surfaces... (Ce_data.py:178)\u001b[39m\n", "\u001b[33m[2024-05-23 15:34:40,677] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)\u001b[39m\n", "\u001b[33m[2024-05-23 15:34:40,732] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)\u001b[39m\n", "\u001b[33m[2024-05-23 15:34:40,838] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)\u001b[39m\n", "\u001b[33m[2024-05-23 15:34:40,887] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)\u001b[39m\n", "\u001b[33m[2024-05-23 15:34:40,996] [WARNING] - cfdmod - Region refinement is greater than data refinement. Resulted in NaN values (Ce_data.py:104)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,318] [INFO] - cfdmod - Processed surfaces! (Ce_data.py:180)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,463] [INFO] - cfdmod - Processing measurement_2 ... (3797609262.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,464] [INFO] - cfdmod - Getting geometry data... (Ce_data.py:151)\u001b[39m\n", "\u001b[95m[2024-05-23 15:34:41,465] [DEBUG] - cfdmod - Surface lanternim ignored! (Ce_geom.py:52)\u001b[39m\n", "\u001b[95m[2024-05-23 15:34:41,487] [DEBUG] - cfdmod - Surface t1_ym ignored! (Ce_geom.py:52)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,495] [INFO] - cfdmod - Tabulating geometry data... (Ce_data.py:154)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,537] [INFO] - cfdmod - Processing timesteps groups... (Ce_data.py:161)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,707] [INFO] - cfdmod - Calculating statistics... (Ce_data.py:175)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,716] [INFO] - cfdmod - Processing surfaces... (Ce_data.py:178)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:41,804] [INFO] - cfdmod - Processed surfaces! (Ce_data.py:180)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,006] [INFO] - cfdmod - Processing measurement_3 ... (3797609262.py:7)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,007] [INFO] - cfdmod - Getting geometry data... (Ce_data.py:151)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,064] [INFO] - cfdmod - Tabulating geometry data... (Ce_data.py:154)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,136] [INFO] - cfdmod - Processing timesteps groups... (Ce_data.py:161)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,334] [INFO] - cfdmod - Calculating statistics... (Ce_data.py:175)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,344] [INFO] - cfdmod - Processing surfaces... (Ce_data.py:178)\u001b[39m\n", "\u001b[37m[2024-05-23 15:34:42,553] [INFO] - cfdmod - Processed surfaces! (Ce_data.py:180)\u001b[39m\n" ] } ], "source": [ "from cfdmod.logger import logger\n", "from cfdmod.use_cases.pressure.shape.Ce_data import CeOutput, process_Ce\n", "\n", "cp_data_path = pathlib.Path(\"./fixtures/tests/pressure/data/cp_t.normalized.h5\")\n", "\n", "for cfg_label, cfg in post_proc_cfg.shape_coefficient.items():\n", " logger.info(f\"Processing {cfg_label} ...\")\n", "\n", " Ce_output: CeOutput = process_Ce(\n", " mesh=mesh,\n", " cfg=cfg,\n", " cp_path=cp_data_path,\n", " )\n", "\n", " Ce_output.save_region_info(cfg_label=cfg_label, path_manager=path_manager)\n", " Ce_output.save_outputs(cfg_label=cfg_label, path_manager=path_manager)\n", " Ce_output.export_mesh(cfg_label=cfg_label, path_manager=path_manager)" ] } ], "metadata": { "kernelspec": { "display_name": "cfdmod-6zl7i90Q-py3.11", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.11" } }, "nbformat": 4, "nbformat_minor": 2 }